Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Admission Controller (Webhook) for Akri Configuration(s) #206

Merged
merged 83 commits into from
Feb 24, 2021
Merged

Admission Controller (Webhook) for Akri Configuration(s) #206

merged 83 commits into from
Feb 24, 2021

Conversation

DazWilkin
Copy link
Contributor

@DazWilkin DazWilkin commented Jan 14, 2021

What this PR does / why we need it:

See: #180

Special notes for your reviewer:

Prematurely opening the PR to politely solicit in-flight reviews; the PR is not yet ready to be accepted.

The Webhook container can be built out-of-band:

REPO="ghcr.io/deislabs/akri"
TAGS="v1"

docker build \
--tag=${REPO}:${TAGS} \
--file=./build/containers/Dockerfile.webhook-configuration \
.

You should be able to test it standalone too by generating a self-signed cert:

openssl req \
-x509 \
-newkey rsa:2048 \
-keyout ./webhook.key \
-out ./webhook.crt \
-nodes \
-days 365 \
-subj "/CN=localhost"

Then throwing an Akri Configuration at it:

curl \
  --silent \
  --insecure \
  --cert ./webhook.crt \
  --key ./webhook.key \
  --request POST \
  --header "Content-Type: application/json" \
  --data "@/path/to/an/akri/configuration.json" \
  https://localhost:8443/validate

Issues|Concerns:

  • Naming (Ha!) webhook-configuration located in ./webhooks/validating/configuration -- Thoughts?
  • I'm unfamiliar with Makefile and Akri's Makefiles are non-trivial -- may I get some help integrating the webhook?
  • The ./build/containers/Dockerfile.webhook-configuration.yml` works but it's not Akri-style
  • The ./github/workflows/build-webhook-configuration.yml` does not work and it's not Akri-style
  • Should I incorporate the webhook into ./version.sh? I think so. It is more bound to CRD versioning than Akri, but...
  • Kubernetes and the Webhook require certs that can't be generated by Helm; there is a pre-Helm step if the Webhook is enabled
  • Should I consider pulling the Webhook's Helm template into a separate Chart?

gripes

  • There is a considerable amount of infrastructural integration needed for this Webhook (GitHub Actions, Dockerfiles, Helm changes, more...) and I would like to fix early to avoid hitting you with a huge PR.
  • I'm challenged to generalize the repo sufficiently that I can run it from github.com/DazWilkin/akri instead of github.com/deislabs/akri e.g. GitHub Actions, GHCR repos etc. (this is probably my deficiency)

If applicable:

  • this PR contains documentation
  • this PR contains unit tests
  • added code adheres to standard Rust formatting (cargo fmt)
  • code builds properly (cargo build)
  • code is free of common mistakes (cargo clippy)
  • all Akri tests succeed (cargo test)
  • inline documentation builds (cargo doc)
  • version has been updated appropriately (./version.sh)

@DazWilkin
Copy link
Contributor Author

-o Dpkg::Options::="--force-overwrite"

Fixed: 2e168fd

@kate-goldenring kate-goldenring linked an issue Feb 17, 2021 that may be closed by this pull request
bfjelds added a commit that referenced this pull request Feb 18, 2021
* Simplify matrix; Use all versions 1.16+ for all distros

* Remove non-existent webhook test

* Remove `microk8s.enable helm3` appears redundant and fails

* Link Kubernetes and crictl for K3s|MicroK8s

* Per: #206 (comment)

* Typo

* fix matrix and crictl path

* Consistency and double-quote to expand `${PWD}`

* Temporarily (!) block K3s 1.16 due to hard-coded device plugs (k3s-io/k3s#1390)

* Test mapping K3s 1.16 device plugins to default K8s location

* Create kubectl path in expected location if not present

* Consistent w/ MicroK8s step

* Wait until cluster has stabilized before wrangling device-plugins

* Initial documentation for `run-test-cases.yml`

* Correct indentation

Co-authored-by: bfjelds <[email protected]>
@bfjelds
Copy link
Collaborator

bfjelds commented Feb 20, 2021

i think this is probably a rebase and version bump away from being able to merge :)

@DazWilkin
Copy link
Contributor Author

DazWilkin commented Feb 20, 2021 via email

@bfjelds
Copy link
Collaborator

bfjelds commented Feb 23, 2021

it looks like the rust dependency security check is picking up on a couple known vulnerabilities (in serde_yaml and hyper). can you update those? i think we've updated our other code to use hyper=0.13.10 and serde_yaml=0.8.

@DazWilkin
Copy link
Contributor Author

it looks like the rust dependency security check is picking up on a couple known vulnerabilities (in serde_yaml and hyper). can you update those? i think we've updated our other code to use hyper=0.13.10 and serde_yaml=0.8.

Unfortunately these changes then break a bunch of other things :-(

I'll need to revisit the tooling that auto-generates the rust sources in that repo to see whether it's a trivial fix.

@bfjelds
Copy link
Collaborator

bfjelds commented Feb 23, 2021

Unfortunately these changes then break a bunch of other things :-(

Ugh.

I'll need to revisit the tooling that auto-generates the rust sources in that repo to see whether it's a trivial fix.

Fingers triple crossed.

@DazWilkin
Copy link
Contributor Author

Unfortunately these changes then break a bunch of other things :-(

Ugh.

I'll need to revisit the tooling that auto-generates the rust sources in that repo to see whether it's a trivial fix.

Fingers triple crossed.

Ok. I'm using OpenAPI Generator to (re)generate Rust sources using the Swagger spec for the Admission API. I originally grabbed the Swagger doscs for the Admission API v1 from here.

Today, when I regenerated the sources, a different set of dependencies is being used (no serde_yaml, hyper). My unit tests all pass so I'm going to submit this and.... hope for the best!

Now (my 'crate' version: v1.1.0):

[package]
name = "openapi"
version = "1.1.0"
authors = ["OpenAPI Generator team and contributors"]
edition = "2018"

[dependencies]
reqwest = { version = "^0.11", default-features = false, features = ["json","multipart"] }
serde = "^1.0"
serde_derive = "^1.0"
serde_json = "^1.0"
url = "1.5"

Was (my 'crate' version: v1.0.0):

[package]
name = "openapi"
version = "1.0.0"
authors = ["OpenAPI Generator team and contributors"]

[dependencies]
serde = "^1.0"
serde_derive = "^1.0"
serde_json = "^1.0"
url = "1.5"
hyper = "~0.11"
serde_yaml = "0.7"
base64 = "~0.7.0"
futures = "0.1.23"

[dev-dependencies]
tokio-core = "*"

@DazWilkin
Copy link
Contributor Author

Because it's the first time, I just gotta put this here 😄

image

@DazWilkin
Copy link
Contributor Author

DazWilkin commented Feb 23, 2021 via email


# Required by Webhook
# DNS: `akri-webhook-configuration.default.svc`
# Expires: 09-Feb-2022
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we add instructions here on how to regenerate?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed: 438061a

I had this document written for myself.

I didn't add it initially because there was no similar document for the existing run-end-to-end test.

I've also added: Test K3s, Kubernetes (Kubeadm) and MicroK8s.


if not shared_test_code.check_akri_state(1, 1, 0, 0, 0, 0):
print("Akri not running in expected state")
run("sudo {kubectl} get pods,services,akric,akrii --show-labels".
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Curious, how come helm commands do not require sudo, but kubectl do? If possible, would rather not call sudo from within the script so as not to result in a prompt.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is following the example of the existing end-to-end test code. i'm not sure i can answer the why, but from trial-and-error, sudo seemed to be needed for kubectl.

maybe we need to call the python test scripts with a sudo command so that the scripts themselves don't need to. maybe this can be part of the test cleanup issue: #240

test/run-webhook.py Outdated Show resolved Hide resolved
webhooks/validating/configuration/src/main.rs Outdated Show resolved Hide resolved
@bfjelds bfjelds merged commit 524f4b6 into project-akri:main Feb 24, 2021
@bfjelds
Copy link
Collaborator

bfjelds commented Feb 24, 2021

woo hoo!! thanks @DazWilkin!!!

@DazWilkin
Copy link
Contributor Author

DazWilkin commented Feb 24, 2021

Post Mortem

TL;DR I recommend smaller (faster) PRs with better automation of toil. The following is provided in the hope that it adds to Akri's success. Please don't take any of what follows as criticism. If you see criticism herein, it is my fault of poorly explaining myself.


Recommendations

Background

The Webhook was created to automate validation of Akri Configurations (#180). It was original written in Golang and then rewritten in Rust to be more sympathetic to Akri's codebase. This author had not written a Kubernetes (Admission) Webhook, documentation (Golang|Rust) was scant, the API is moving from v1beta to v1, and TLS provisioning 'evolved' with the fast-moving Kubernetes API.

The (Rust) Webhook is ~250 lines of code and ~500 lines of unit tests. 80 lines (check) provided by Deislabs (@bfjelds). The remainder is boilerplate code to create a TLS-supporting httpd that accepts AdmissionReview(s), extracts Akri Configurations, checks them and returns AdmissionReview(s) with a valid (true) or invalid (false).

AdmissionReview, messages are sent by Kubernetes API Server to user-defined Webhook servers. For this reason they are considered out-of-band to the core Kubernetes Swagger|OpenAPI spec (issue) and not included in e.g. kube. As a result, a detour was needed to generate these messages as Rust sources for this project (link).

Development of the (Golang) Webhook began (link mid-December 2020 and a provisional PR of the Rust implementation was submitted mid-January 2021 (link).

PR #206 comprises changes to 22 files, 83 commits and 41 days.

I estimate (generously) the effort represents <<50% core function code and >>50% toil.

The advantage of requiring everything in one PR (code, documentation, tests, CI) is clear. However, large(r) PRs are burdensome for all (many thanks to @bfjelds and @kate-goldenring for the ongoing, patient and valuable feedback, thanks guys!). Developers may be(come) discouraged by these. They suffer from "bit rot".

Supporting code (Makefiles, GitHub Actions, Dockerfiles) is error-prone, uses a myriad (possibly inextricably) and is less-well documented. These processes would benefit from more transparent documentation and proposals for automation. As part of the preliminary proposal|acceptance process, consideration could be given to whether the developer or other developers partition the work of core code development from the supporting code development. Decisions could then be made on these resource allocations as to whether to proceed. For example a protocol developer who's willing primarily to contribute protocol code may be encouraged to find a companion developer to develop the CI code.

To avoid some of the above hurdles, documentation could be considered that outlines the steps necessary to develop components for Akri, both the core functionality and expectations around testing, documentation and automation.

The Akri team may wish to consider "Rules of Engagement" that outline the project's needs|expectations. Are in-repo protocols desired vs. (thanks to @kate-goldenring gRPC adaptor) encouragement of external, community-contributed protocols preferred? Are the guidelines different for contributions to the core repro vs. acceptance criteria for community-contributed? Are protocols preferred to e.g. Webhooks? What are the project's greatest needs and priorities? What expectations are there for keeping Rust (crate) dependencies current and maintaining currency with Kubernetes versions?

@DazWilkin DazWilkin deleted the webhook-configuration branch February 24, 2021 19:24
@bfjelds
Copy link
Collaborator

bfjelds commented Feb 24, 2021

This is super helpful feedback and very much appreciated. We would very much like to reduce the toil to as close to 0 as possible and have useful documentation for the rest!! Any critique that helps us towards that is 1000% requested.

I, and I suspect the team as a whole, agree entirely with each of the recommendations.

kate-goldenring added a commit that referenced this pull request Apr 27, 2021
* test latest k8s versions [SAME VERSION] (#188)

* update changelog for 0.1.5 release (#189)

* add more description and simplify commands in e2e demo (#191)

* Various typos fixed on new OPCUA documentation (#195)

* Various typos fixed on new OPCUA documentation

Signed-off-by: Didier Durand <[email protected]>

* Fixes on extensibility documentation

Signed-off-by: Didier Durand <[email protected]>

* Make end-to-end demo on Raspberry Pi simpler and more descriptive (#193)

* mirror updates in e2e demo in rasp-pi demo

* syntax changes, capacity specification, building kernel module

* fix syntax issues

* Get Agent logs before testing their contents [SAME VERSION] (#197)

* add additional checks to see why getting logs failing

* log information when get crictl error

* use os.system to log info

* try using shell with subprocess when doing complex commands

* Fix failing to query container runtime in test workflow on MicroK8s [SAME VERSION] (#202)

* loop query containerd several times instead of sleeping

* shorten agent log query

* Allow overwriting controller.nodeSelectors (#194)

* Allow overwriting controller.nodeSelectors

* Add note about `sed` for MacOS contributors

* Allow conditional compilation of agent protocols (#196)

* Allow conditional compilation of agent protocols

* Bump patch version

Co-authored-by: Jiayi Hu <[email protected]>

* Prometheus (#190)

* add frame count metric to udev broker

* add prometheus metrics

* format metrics.rs

* update Helm charts for Prometheus support

* Prometheus documentation

* increase supported rust version to latest

* fix metrics chart

* use PodMonitor instead of ServiceMonitor for Akri Agent and Controller

* update tarpaulin to latest version to fix protobuf issue

* remove debug echo shared setting

* update version

* Use anyhow instead of the deprecated failure crate (#201)

* Switch to use anyhow crate instead of failure crate

Include Cargo.lock updates

* Rebase and increment patch version

* Merge conflict

* Add missing version updates after rebase

* [Helm] Added CRD variables (#205)

* Added CRD variables

* `version.sh` updates Helm `crds.version`

* Bump version

* Document naming convention (#204)

* Initial commit

* Remove references to `http` example

* Added `udev-broker`

* Added `akri-udev`

* Rephrased

* Typo

* naming-guidelines >> development.md

* r/udev-broker/udev-video-broker

* punctuation

* r/Resources/resources

* r/Compute/Computer (#210)

* fix instructions for cloning and building v4l2 (#209)

* Update hyper version and other dependencies

* Update patch version

* Explicitly specify h2 patch version dependency to avoid future accidentl updates by cargo-update or similar

* Remove redundant unnecessary hyper dependencies

* Add security audit workflow

* Move security audit to existing check-rust workflow

* Simplify mockall usage (#214)

* Simplify mockall usage

* Bump patch version

* add project logo and art [SAME VERSION] (#149)

* add akri branding and artwork

Signed-off-by: flynnduism <[email protected]>

* edit artwork README

Signed-off-by: flynnduism <[email protected]>

* re-render dark logos

Signed-off-by: flynnduism <[email protected]>

* redraw the svg icon to fix glitchy render

Signed-off-by: flynnduism <[email protected]>

* update logo.svg

Signed-off-by: flynnduism <[email protected]>

* fix the mixed up color hex values

Signed-off-by: flynnduism <[email protected]>

* update branding with inconsolata typeface

Signed-off-by: flynnduism <[email protected]>

* use correct casing for mentions of Akri

Signed-off-by: flynnduism <[email protected]>

* remove default documentation to use latest containers (#218)

* Image pull policy (#207)

* change default image pull policy to IfNotPresent

* set ImagePullPolicy to default to empty

* increase version

* only add ImagePullPolicy if specified

* Add a workflow to automated dependencies update

* fix the instruction of the end to end demo and the rspi4 demo. (#217)

* Add comment for  cargo-audit action behavior

* use akri bot PAT for the autoupdate workflow

* update token  secret name

* Patch anomaly detection app (#229)

* close connection to grpc service each loop

* update version

* use local subchannel pool

* fix title typo

* Add logo to README [SAME VERSION] (#220)

* Auto-updated dependencies

* Auto-updated dependencies

* Allow unreachable code introduced with feature-driven protocols [SAME VERSION] (#232)

* Allow unreachable code introduced with feature-driven protocols [SAME VERSION]

The catchall match is there in case someone turns off one of the handlers via features ... but at runtime the disabled feature is configured.

* update for cargo fmt

* add comment explanation

* fix cargo fmt

* Improve development experience with timestamped container labels (#234)

Using labels based on version.txt can make it difficult to iterate during development.  Creating timestamped labels for the local build experience should make it easier to differentiate between development builds.

* Reduce frequency of dependency update [SAME VERSION] (#236)

* Reduce frequency of dependency update

Our dependencies update on a daily basis ... not sure it makes sense for us to update our version each time someone else's do.  I chose a monthly cadence because it would, at most, cause us to update our version 12x per year, which doesn't seem too bad.

* Update auto-update-dependencies.yml

* update code owners

* Lazy eval of makefile timestamp breaks local build [SAME VERSION] [IGNORE INTERMEDIATE BUILDS] (#242)

* Update hyper crate for security risk

* patch version update

* force override kubernetes package to deal with installation errors

* Fix typo

* Simplify matrix; Use all versions 1.16+ for all distros (#244)

* Simplify matrix; Use all versions 1.16+ for all distros

* Remove non-existent webhook test

* Remove `microk8s.enable helm3` appears redundant and fails

* Link Kubernetes and crictl for K3s|MicroK8s

* Per: #206 (comment)

* Typo

* fix matrix and crictl path

* Consistency and double-quote to expand `${PWD}`

* Temporarily (!) block K3s 1.16 due to hard-coded device plugs (k3s-io/k3s#1390)

* Test mapping K3s 1.16 device plugins to default K8s location

* Create kubectl path in expected location if not present

* Consistent w/ MicroK8s step

* Wait until cluster has stabilized before wrangling device-plugins

* Initial documentation for `run-test-cases.yml`

* Correct indentation

Co-authored-by: bfjelds <[email protected]>

* add microk8s inspect to installation

* try waiting repeatedly for microk8s to be ready

* Cleanup streaming app sample (#173)

* Initial version

* Create logical classes

* Fixes and optimizations

* Use naming guideline for method names

* Version bump

* Version bump

Co-authored-by: Brian Fjeldstad <[email protected]>

* Admission Controller (Webhook) for Akri Configuration(s) (#206)

* Helm Chart updates

* Add 'webhooks' to the project

* Commented Helm Chart `webhook-configuration`

* Template `webhook-configuration`

* Webhook service

* Dockerfile (draft)

* GitHub Action (draft)

* Force build

* Trying again

* And again

* Added GHCR secret to fork

* Grrr

* Grrr

* Issue w/ GitHub Action build

* Undo

* Consistency

* Revised Rust Webhook to not require these

* Preliminary README

* Update `version.sh` and run `./version.sh -u -s`

* Added `webhook-configuration`

* Does this resolve Helm Linting concern?

* r/AMD32V7/AMR32V7

* Are these required?

* Follow pattern

* Follow Akri pattern

* r/webhook-configuration/webhookConfiguration

* correct path references

* Cross-build Rust

* Exceptions no longer required

* Assume `./target/release/webhook-configuration`

* Expose x-plat targets to docker

* Omission

* Improve handling of flags

* Tidy

* Correct indendation

* Version bump

* Update `CHANGELOG`

* `cargo.lock` versions now bumped too

* Temporarily (!) bumping build timeouts

* Corrected component reference

* Missed `build-arg=CROSS_BUILD_TARGET=...`

* Avoid Helm issue with un-`named` `Lists`

* Revert `CHANGELOG`

* Added unit tests

* Filters Akri Configuration manifest so that it validates

* Added test for filtered `generation`

* Added test for extended (complete) Config

* To avoid GitHub Actions build failure

* End-to-End Webhook tests

* Integration tests require `actix-rt`

* Include `webhook-configuration` container image

* Learns all the things!

* Typo

* Added `webhook` to `test-case`s

* Removed `get_agent_and_controller` reference

* Simplified Actions `matrix`; Updated Webhook certs

* Override `webhookConfiguration.image.tag` to `pr-amd64`

* Add debugging

* Typo

* sudo'ing `kubectl` commands

* Try subprocess; reduce test matrix

* Add `shell=True`

* More `describe`s

* Correct `kubectl --selector` commands

* Reflect r/ENTRYPOINT/CMD in Dockerfile

* Try matrix

* Debugging Kubenernetes 1.16

* Additional MicroK8s 1.16+1.17 and debugging

* Generate: `*-webhook-log` from GitHub Actions

* Add some debugging statements

* K8s 1.16 expects AdmissionReview to be v1beta1

* Checking K3s 1.16+1.17

* Ordering may be significant

* Reverted

* Don't delete CRDs; Remove redundant debugging

* Limit to distro-versions known to work for E2Es

* Bumped OpenAPI-generated sources due to Akri security audit issues

* Documents `run-webook.py`

* Typo

* `expect` only when providing useful message

* fix Makefile formatting for image push [SAME VERSION]

* add updates to lock file fir admission controller webhook dependencies (#254)

* proposal for logging standards

* Fix typo

* Simplify containers makefile (#256)

* simplify makefile for containers

* add for all containers

* fix indent

* bump version

* try to fix indentation

* fix manifest creation error (#257)

* Fix onvif

* changes to the particular makefiles should invoke container workflow (#258)

* Add more docs for akri build (#260)

* add docs for akri build

* address feedback

* add local instructions

* fix mistakes

* Auto-updated dependencies

* Allow dependencies auto update to be manually run

* Auto-updated dependencies

* increase timeout for tarpaulin and check-rust workflows (#266)

* Increase docker create timeout to 600 minutes and document this hidden timeout (#267)

* Try same env var for action and container timeout

* output script to verify

* try reusing timeout-minutes directly

* Try moving timeout to step and access that directly

* try fixing env var creation

* try using env var again

https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#job-context suggests timeout-minutes can be set from env

* Use step.timeout-minutes because it can pull from env var

* Update run-tarpaulin.yml

* just make the docker keep alive script sleep 600 minutes

* remove env var

* fix typo

* typos, typos, typos

* create certs for webhook e2e tests with longer lasting CA (#271)

* Enable Discovery Handlers as Pods (#252)

* Move security audit checks to a daily schedule instead of on PRs

* Fix typo

* Link to specific github run url from github context

* rename rust jobs

* remove unnecessary job

* only run on main and not forks

* Update security-audit.yml

Restrict the action to main repo and not forks

* Serialize Configuration Properties for Webhook (#276)

* don't skip serializing configuration properties

* increase version

* rust fmt fixes

* Try to ONLY build rust once per platform (#270)

* build rust once/platform, share with artifacts

* timeout => timeout-minutes

* trigger when build-rust-code changes

* only run container builds after successful rust build

* install rust toolchain to build rust

* add crossbuild qemu

* reduce retention to minimum

* make test timeout longer

* update version

* Fix artifact name [SAME VERSION] (#280)

* fix artifact name [SAME VERSION]

* only run for main

* Add Workflow to Cancel Previous PR Workflows [SAME VERSION] (#281)

* add workflow to cancel all previous workflows on a pr

* remove security workflow and cancel workflow from list

* Build both slim and full Agents [IGNORE INTERMEDIATE BUILDS] (#279)

* specify component name in agent multiarch build (#285)

* Build discovery handler images [SAME VERSION] (#286)

* Enable Canceling Previous Workflows on PRs from Forks [SAME VERSION] (#284)

* use workflow_run trigger in cancel workflow

* only run cancel workflow explicitly for pull_request events

* Increase e2e test timeout [SAME VERSION] (#287)

* increase e2e test timeout

* increase timeout further

* Ensure Discovery Handler is marked as available again after Configuration deletions (#282)

* Make sure `shared` environment variable is set in debug echo Discovery Handler (#289)

* Overwrite latest tag when user specifies a tag (#293)

* overwrite latest tag when user supplies tag

* increase version

* Auto-updated dependencies

* Reference correct Agent features for embedding Discovery Handlers [IGNORE INTERMEDIATE BUILDS] (#295)

* Debug echo properties (#288)

* Add Documentation on using Debug Echo [SAME VERSION] (#296)

* make sure webhook-configuration version updated in lock file (#300)

* Remove un-utilized CRD field (#290)

* remove rbac property from Instance CRD

* bump minor version to 0.5.0 for breaking change

* Rename CRD fields to be more descriptive (#297)

* change Configuration.properties to Configuration.brokerProperties

* change Instance.metadata to Instance.brokerProperties

* increase minor version due to CRD breaking change

* fix errors in user guide (#302)

* Remove udev directory mount from Agent (#304)

* Extend documentation (#303)

* Documentation fixes (#307)

A few simple fixes to the Debug Echo documentation.

Signed-off-by: Hernan Gatta <[email protected]>

* fix opc ua configuration table in docs (#309)

* use sudo when getting logs in e2e tests (#312)

* suggest background reading before discovery handler development (#310)

* Update cluster setup documentation (#308)

* lint helm chart with values (#306)

* Add documentation on setting a Configuration's `brokerProperties` (#311)

* Fix end-to-end tests (#301)

* Reduce K3s and MicroK8s eviction limits for tests [SAME VERSION] (#313)

* reduce K3s eviction limits for tests

* reduce MicroK8s limits

* Rename configuration templates (#315)

* rename configuration templates

* increase version

* Set compute resource limits and requests for all Akri components (#305)

* Extensibility example fixes [SAME VERSION] (#321)

* Use latest Rust and Tarpaulin (#318)

* use latest tarpaulin in workflow

* use latest rust in workflows

* increase version

* use previous tarpaulin version due to segfault issue

* Increase dependency minor versions where possible [SAME VERSION] (#323)

* increase cfg-if, env_logger, mockall_double, prometheus, udev, opcua-client, and rand crate minor versions

* increase version

* extend sleep in test case workflow to 45 minutes for component builds to complete (#326)

* Test e2e tests on latest K8s version [SAME VERSION] (#317)

* reference Akri's release Helm chart in documentation (#325)

* Update CHANGELOG for v0.6.5 release (#319)

* [Extensibility] HTTP protocol (branch: http-extensibility) (#135)

* Initial commit

* Working

* Correct errors & revise for Device|Discovery v2

* Working

* Should (!) work

* Typo

* Enrich

* Refine

* Fixes: #102

* Moves

* Resolved

* Revised for `dnsPolicy`

* Dockerfiles

* Added gRPC solution

* Replaced

* Kubernetes specs

* Merge

* Correct Kubernetes config filenames

* Typo

* Removed duplicate

* Standalone broker exposes no ports

* end-to-end-demo-gce.md: fixing 1 typo (#131)

Hi,
just removing the superfluous 's'
Didier

* link to codecov.io and use codecov action (#134)

* Update end-to-end-demo.md (#112)

* Update end-to-end-demo.md

Hi there
I extended the documentatio with the installation of linux-modules-extra because I had to add this package on Ubuntu 20.04 LTS (on a GCE instance): it seems that it doesn't come by default on distros / images aimed at backend servers. v4l loopback won't load if this other module is not present.
Didier

* Update end-to-end-demo.md

fixing initial text according to revision notes in PR review

* Update end-to-end-demo.md

fixing style

* Update end-to-end-demo.md

simplifying text, based on PR review by Kate

* rebase to finalize PR

* Fix codecov for pull_request_target [SAME VERSION] (#138)

* fix codecov for pull_request_target

* add anti-pull-request-* conditional

* Do not upload to codecov on PRs (#140)

* end-to-end-demo-rpi4: fixing 1 typo (#143)

Hello,
Title says it all
Didier

* end-to-end demo : fixing 1 typo (#141)

Hi there,
The title says it all
Didier

* Minor e2e demo doc flow change (#139)

* Minor flow change

* Cleanup

* Expand udev rule support (#130)

* add support for SUBSYSTEMS, KERNELS, ATTRIBUTES, DRIVERS, and TAGS fields

* fix formatting and add comments

* add recursive search for subsystems

* update udev configuration document with newly supported fields

* check child device for field before looking up hierarchy

* update version

* document how to filter for only devices with devnodes when testing

* reuse shared code

* rust fmt fixes

* add inline documentation for regex matching

* Update end-to-end-demo.md (#113)

Hi there,
I added a comment regarding the importance of the version of v4l2loopback to avoid my personal initial mistake to others: I did not realize at start that the version was so important. So I went through this ticket with the dev: umlaeute/v4l2loopback#370
Didier

Co-authored-by: bfjelds <[email protected]>

* Add sudo into udev configuration doc (#144)

* Use arm7

* Reference arm7

* Reference branch on clone

* `REPO="akri"`

* Helm template for Agent already revised

* Consistency

* Use `./version.txt` for Akri version

* Automate IMAGE updates

* Build|Push gRPC images; Add'l consistency

* Add Action to build HTTP Broker containers

* I guess `http-extensibility` not `main`

* Enable PRs to test changes to helm charts [SAME VERSION] (#146)

* enable PRs to test changes to helm charts

* handle manual job, fix push and release conditional

* trigger e2e for helm changes

* Updates references to `armv7`

* Removed `shared`  from HTTP Broker Dockerfiles

* Correct version reference for image tags

* Typo

* Adds Golang Device|Discovery and alt-gRPC

* s/println!/trace!

* Consistency

* Reflect relocation of apps

* Simplify environment

* Typo

* Consistency on repo names for HTTP apps

* Rename HTTP apps gRPC images

* GitHub Actions to build HTTP apps containers

* Configure broker security context (#148)

* make udev broker security context configurable

* update version

* change group permissions to be default in example

* fix comment with group id

* Remove privileged security context from Akri Agent (#147)

* Remove (redundant!?) aliasing

* Remove healthchecks (`/healthz`)

* Removed `akri-shared` dep

* Simplified using `strategy.matrix`

* Revised to use `strategy.matrix`

* reference macro using fully-qualified module name

* r|Microsoft|deislabs/akri

* Remove unnecessary include

* Add precision on arch being built

* Consistent image naming and v1

* Remove `/v2/` references

* Explantion of different broker implementations

* Cleanup Workflows [IGNORE INTERMEDIATE BUILDS][SAME VERSION] (#155)

* don't persist github creds and remove setup.sh from workflows

* Update CHANGELOG for release v0.0.44 (#153)

* Update CHANGELOG for release v0.0.44

* update release to better describe helm changes and supported flavors

* add note about known k3s incompat

* Pin CHANGELOG changes to the expected label

* Fix CHANGELOG typo

* Optimize build and test all supported versions (#157)

* build once, test all supported versions

* test step needs build step

* fix copy-paste error

* use startsWith instead of '==' to check kube-runtime

* for download, specifying path introduces an unwanted directory

* load the artifact containers into docker for Kubernetes

* microk8s ctr images import is mysteriously failing with 'context deadline exceeded'

* avoid k3s' crictl, add more testing versions for kubernetes & k3s

* allow downgrades for kubernetes install, try to understand microk8s image import failure

* swallow the return code of version checks

* use persist-creds=false

* disable microk8s 1.19 for now

* microk8s 1.19 requires small sleep before it is ready for ctr requests

* to ensure sequential running, we cannot skip the build-containers job (just its steps) (#159)

* Update user guide with first release tag for Akri release chart (#160)

* update user guide with first release tag for akri release chart

* reference akri release chart instead of dev chart in docs

* Remove pull_request_target triggers and minimize credential use [SAME VERSION] [IGNORE INTERMEDIATE BUILDS] (#161)

* remove dockerhub credentials from workflows

* add link to repo to intermediate containers

* remove pull_request_target

* only log into docker when pushing changes to ghcr

* Typos

* Added existing "Extensibility" preamble

* Tidy

* Replace "Extensibility"

* attempt to merge extensibility.md

i focused on the standalone to cut down on the size (the file is still 800+ lines) with a thought towards linking to some md files in http-extensibility branch for more details (on the rust grpc and golang grpc).

* tighten up to reduce size

combine device and discovery into one http server/pod, remove some comments from quoted code

* provide a few more explanations

* fix typo

* Use matrix for build-http-broker-containers.yaml

* Replace backup md file with extensibility-http-grpc.md

Create document for deeper dive into gRPC broker/client code.  This can be referenced from extensibility.md.

* update extensibility.md to be consistent 'HTTP'

* create links to http-extensibility branch

* after walkthrough, make a couple fixes

* use different curl container

busyboxplus seems to have a dns problem that manifests on k3s

* remove workflows for http-extensibility

* remove new workflows in extensibility branch

Co-authored-by: Didier Durand <[email protected]>
Co-authored-by: bfjelds <[email protected]>
Co-authored-by: Jiri Appl <[email protected]>
Co-authored-by: Kate Goldenring <[email protected]>

* add http discovery handler to the discovery handler modules folder

Co-authored-by: Didier Durand <[email protected]>
Co-authored-by: Jiayi Hu <[email protected]>
Co-authored-by: Jiayi Hu <[email protected]>
Co-authored-by: Roaa <[email protected]>
Co-authored-by: Daz Wilkin <[email protected]>
Co-authored-by: Ronan Flynn-Curran <[email protected]>
Co-authored-by: romoh <[email protected]>
Co-authored-by: Chao Zheng <[email protected]>
Co-authored-by: bfjelds <[email protected]>
Co-authored-by: Jiri Appl <[email protected]>
Co-authored-by: Hernan Gatta <[email protected]>
kate-goldenring pushed a commit to project-akri/akri-docs that referenced this pull request Aug 5, 2021
* Simplify matrix; Use all versions 1.16+ for all distros

* Remove non-existent webhook test

* Remove `microk8s.enable helm3` appears redundant and fails

* Link Kubernetes and crictl for K3s|MicroK8s

* Per: project-akri/akri#206 (comment)

* Typo

* fix matrix and crictl path

* Consistency and double-quote to expand `${PWD}`

* Temporarily (!) block K3s 1.16 due to hard-coded device plugs (k3s-io/k3s#1390)

* Test mapping K3s 1.16 device plugins to default K8s location

* Create kubectl path in expected location if not present

* Consistent w/ MicroK8s step

* Wait until cluster has stabilized before wrangling device-plugins

* Initial documentation for `run-test-cases.yml`

* Correct indentation

Co-authored-by: bfjelds <[email protected]>
kate-goldenring added a commit to kate-goldenring/akri that referenced this pull request Oct 29, 2021
* test latest k8s versions [SAME VERSION] (project-akri#188)

* update changelog for 0.1.5 release (project-akri#189)

* add more description and simplify commands in e2e demo (project-akri#191)

* Various typos fixed on new OPCUA documentation (project-akri#195)

* Various typos fixed on new OPCUA documentation

Signed-off-by: Didier Durand <[email protected]>

* Fixes on extensibility documentation

Signed-off-by: Didier Durand <[email protected]>

* Make end-to-end demo on Raspberry Pi simpler and more descriptive (project-akri#193)

* mirror updates in e2e demo in rasp-pi demo

* syntax changes, capacity specification, building kernel module

* fix syntax issues

* Get Agent logs before testing their contents [SAME VERSION] (project-akri#197)

* add additional checks to see why getting logs failing

* log information when get crictl error

* use os.system to log info

* try using shell with subprocess when doing complex commands

* Fix failing to query container runtime in test workflow on MicroK8s [SAME VERSION] (project-akri#202)

* loop query containerd several times instead of sleeping

* shorten agent log query

* Allow overwriting controller.nodeSelectors (project-akri#194)

* Allow overwriting controller.nodeSelectors

* Add note about `sed` for MacOS contributors

* Allow conditional compilation of agent protocols (project-akri#196)

* Allow conditional compilation of agent protocols

* Bump patch version

Co-authored-by: Jiayi Hu <[email protected]>

* Prometheus (project-akri#190)

* add frame count metric to udev broker

* add prometheus metrics

* format metrics.rs

* update Helm charts for Prometheus support

* Prometheus documentation

* increase supported rust version to latest

* fix metrics chart

* use PodMonitor instead of ServiceMonitor for Akri Agent and Controller

* update tarpaulin to latest version to fix protobuf issue

* remove debug echo shared setting

* update version

* Use anyhow instead of the deprecated failure crate (project-akri#201)

* Switch to use anyhow crate instead of failure crate

Include Cargo.lock updates

* Rebase and increment patch version

* Merge conflict

* Add missing version updates after rebase

* [Helm] Added CRD variables (project-akri#205)

* Added CRD variables

* `version.sh` updates Helm `crds.version`

* Bump version

* Document naming convention (project-akri#204)

* Initial commit

* Remove references to `http` example

* Added `udev-broker`

* Added `akri-udev`

* Rephrased

* Typo

* naming-guidelines >> development.md

* r/udev-broker/udev-video-broker

* punctuation

* r/Resources/resources

* r/Compute/Computer (project-akri#210)

* fix instructions for cloning and building v4l2 (project-akri#209)

* Update hyper version and other dependencies

* Update patch version

* Explicitly specify h2 patch version dependency to avoid future accidentl updates by cargo-update or similar

* Remove redundant unnecessary hyper dependencies

* Add security audit workflow

* Move security audit to existing check-rust workflow

* Simplify mockall usage (project-akri#214)

* Simplify mockall usage

* Bump patch version

* add project logo and art [SAME VERSION] (project-akri#149)

* add akri branding and artwork

Signed-off-by: flynnduism <[email protected]>

* edit artwork README

Signed-off-by: flynnduism <[email protected]>

* re-render dark logos

Signed-off-by: flynnduism <[email protected]>

* redraw the svg icon to fix glitchy render

Signed-off-by: flynnduism <[email protected]>

* update logo.svg

Signed-off-by: flynnduism <[email protected]>

* fix the mixed up color hex values

Signed-off-by: flynnduism <[email protected]>

* update branding with inconsolata typeface

Signed-off-by: flynnduism <[email protected]>

* use correct casing for mentions of Akri

Signed-off-by: flynnduism <[email protected]>

* remove default documentation to use latest containers (project-akri#218)

* Image pull policy (project-akri#207)

* change default image pull policy to IfNotPresent

* set ImagePullPolicy to default to empty

* increase version

* only add ImagePullPolicy if specified

* Add a workflow to automated dependencies update

* fix the instruction of the end to end demo and the rspi4 demo. (project-akri#217)

* Add comment for  cargo-audit action behavior

* use akri bot PAT for the autoupdate workflow

* update token  secret name

* Patch anomaly detection app (project-akri#229)

* close connection to grpc service each loop

* update version

* use local subchannel pool

* fix title typo

* Add logo to README [SAME VERSION] (project-akri#220)

* Auto-updated dependencies

* Auto-updated dependencies

* Allow unreachable code introduced with feature-driven protocols [SAME VERSION] (project-akri#232)

* Allow unreachable code introduced with feature-driven protocols [SAME VERSION]

The catchall match is there in case someone turns off one of the handlers via features ... but at runtime the disabled feature is configured.

* update for cargo fmt

* add comment explanation

* fix cargo fmt

* Improve development experience with timestamped container labels (project-akri#234)

Using labels based on version.txt can make it difficult to iterate during development.  Creating timestamped labels for the local build experience should make it easier to differentiate between development builds.

* Reduce frequency of dependency update [SAME VERSION] (project-akri#236)

* Reduce frequency of dependency update

Our dependencies update on a daily basis ... not sure it makes sense for us to update our version each time someone else's do.  I chose a monthly cadence because it would, at most, cause us to update our version 12x per year, which doesn't seem too bad.

* Update auto-update-dependencies.yml

* update code owners

* Lazy eval of makefile timestamp breaks local build [SAME VERSION] [IGNORE INTERMEDIATE BUILDS] (project-akri#242)

* Update hyper crate for security risk

* patch version update

* force override kubernetes package to deal with installation errors

* Fix typo

* Simplify matrix; Use all versions 1.16+ for all distros (project-akri#244)

* Simplify matrix; Use all versions 1.16+ for all distros

* Remove non-existent webhook test

* Remove `microk8s.enable helm3` appears redundant and fails

* Link Kubernetes and crictl for K3s|MicroK8s

* Per: project-akri#206 (comment)

* Typo

* fix matrix and crictl path

* Consistency and double-quote to expand `${PWD}`

* Temporarily (!) block K3s 1.16 due to hard-coded device plugs (k3s-io/k3s#1390)

* Test mapping K3s 1.16 device plugins to default K8s location

* Create kubectl path in expected location if not present

* Consistent w/ MicroK8s step

* Wait until cluster has stabilized before wrangling device-plugins

* Initial documentation for `run-test-cases.yml`

* Correct indentation

Co-authored-by: bfjelds <[email protected]>

* add microk8s inspect to installation

* try waiting repeatedly for microk8s to be ready

* Cleanup streaming app sample (project-akri#173)

* Initial version

* Create logical classes

* Fixes and optimizations

* Use naming guideline for method names

* Version bump

* Version bump

Co-authored-by: Brian Fjeldstad <[email protected]>

* Admission Controller (Webhook) for Akri Configuration(s) (project-akri#206)

* Helm Chart updates

* Add 'webhooks' to the project

* Commented Helm Chart `webhook-configuration`

* Template `webhook-configuration`

* Webhook service

* Dockerfile (draft)

* GitHub Action (draft)

* Force build

* Trying again

* And again

* Added GHCR secret to fork

* Grrr

* Grrr

* Issue w/ GitHub Action build

* Undo

* Consistency

* Revised Rust Webhook to not require these

* Preliminary README

* Update `version.sh` and run `./version.sh -u -s`

* Added `webhook-configuration`

* Does this resolve Helm Linting concern?

* r/AMD32V7/AMR32V7

* Are these required?

* Follow pattern

* Follow Akri pattern

* r/webhook-configuration/webhookConfiguration

* correct path references

* Cross-build Rust

* Exceptions no longer required

* Assume `./target/release/webhook-configuration`

* Expose x-plat targets to docker

* Omission

* Improve handling of flags

* Tidy

* Correct indendation

* Version bump

* Update `CHANGELOG`

* `cargo.lock` versions now bumped too

* Temporarily (!) bumping build timeouts

* Corrected component reference

* Missed `build-arg=CROSS_BUILD_TARGET=...`

* Avoid Helm issue with un-`named` `Lists`

* Revert `CHANGELOG`

* Added unit tests

* Filters Akri Configuration manifest so that it validates

* Added test for filtered `generation`

* Added test for extended (complete) Config

* To avoid GitHub Actions build failure

* End-to-End Webhook tests

* Integration tests require `actix-rt`

* Include `webhook-configuration` container image

* Learns all the things!

* Typo

* Added `webhook` to `test-case`s

* Removed `get_agent_and_controller` reference

* Simplified Actions `matrix`; Updated Webhook certs

* Override `webhookConfiguration.image.tag` to `pr-amd64`

* Add debugging

* Typo

* sudo'ing `kubectl` commands

* Try subprocess; reduce test matrix

* Add `shell=True`

* More `describe`s

* Correct `kubectl --selector` commands

* Reflect r/ENTRYPOINT/CMD in Dockerfile

* Try matrix

* Debugging Kubenernetes 1.16

* Additional MicroK8s 1.16+1.17 and debugging

* Generate: `*-webhook-log` from GitHub Actions

* Add some debugging statements

* K8s 1.16 expects AdmissionReview to be v1beta1

* Checking K3s 1.16+1.17

* Ordering may be significant

* Reverted

* Don't delete CRDs; Remove redundant debugging

* Limit to distro-versions known to work for E2Es

* Bumped OpenAPI-generated sources due to Akri security audit issues

* Documents `run-webook.py`

* Typo

* `expect` only when providing useful message

* fix Makefile formatting for image push [SAME VERSION]

* add updates to lock file fir admission controller webhook dependencies (project-akri#254)

* proposal for logging standards

* Fix typo

* Simplify containers makefile (project-akri#256)

* simplify makefile for containers

* add for all containers

* fix indent

* bump version

* try to fix indentation

* fix manifest creation error (project-akri#257)

* Fix onvif

* changes to the particular makefiles should invoke container workflow (project-akri#258)

* Add more docs for akri build (project-akri#260)

* add docs for akri build

* address feedback

* add local instructions

* fix mistakes

* Auto-updated dependencies

* Allow dependencies auto update to be manually run

* Auto-updated dependencies

* increase timeout for tarpaulin and check-rust workflows (project-akri#266)

* Increase docker create timeout to 600 minutes and document this hidden timeout (project-akri#267)

* Try same env var for action and container timeout

* output script to verify

* try reusing timeout-minutes directly

* Try moving timeout to step and access that directly

* try fixing env var creation

* try using env var again

https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#job-context suggests timeout-minutes can be set from env

* Use step.timeout-minutes because it can pull from env var

* Update run-tarpaulin.yml

* just make the docker keep alive script sleep 600 minutes

* remove env var

* fix typo

* typos, typos, typos

* create certs for webhook e2e tests with longer lasting CA (project-akri#271)

* Enable Discovery Handlers as Pods (project-akri#252)

* Move security audit checks to a daily schedule instead of on PRs

* Fix typo

* Link to specific github run url from github context

* rename rust jobs

* remove unnecessary job

* only run on main and not forks

* Update security-audit.yml

Restrict the action to main repo and not forks

* Serialize Configuration Properties for Webhook (project-akri#276)

* don't skip serializing configuration properties

* increase version

* rust fmt fixes

* Try to ONLY build rust once per platform (project-akri#270)

* build rust once/platform, share with artifacts

* timeout => timeout-minutes

* trigger when build-rust-code changes

* only run container builds after successful rust build

* install rust toolchain to build rust

* add crossbuild qemu

* reduce retention to minimum

* make test timeout longer

* update version

* Fix artifact name [SAME VERSION] (project-akri#280)

* fix artifact name [SAME VERSION]

* only run for main

* Add Workflow to Cancel Previous PR Workflows [SAME VERSION] (project-akri#281)

* add workflow to cancel all previous workflows on a pr

* remove security workflow and cancel workflow from list

* Build both slim and full Agents [IGNORE INTERMEDIATE BUILDS] (project-akri#279)

* specify component name in agent multiarch build (project-akri#285)

* Build discovery handler images [SAME VERSION] (project-akri#286)

* Enable Canceling Previous Workflows on PRs from Forks [SAME VERSION] (project-akri#284)

* use workflow_run trigger in cancel workflow

* only run cancel workflow explicitly for pull_request events

* Increase e2e test timeout [SAME VERSION] (project-akri#287)

* increase e2e test timeout

* increase timeout further

* Ensure Discovery Handler is marked as available again after Configuration deletions (project-akri#282)

* Make sure `shared` environment variable is set in debug echo Discovery Handler (project-akri#289)

* Overwrite latest tag when user specifies a tag (project-akri#293)

* overwrite latest tag when user supplies tag

* increase version

* Auto-updated dependencies

* Reference correct Agent features for embedding Discovery Handlers [IGNORE INTERMEDIATE BUILDS] (project-akri#295)

* Debug echo properties (project-akri#288)

* Add Documentation on using Debug Echo [SAME VERSION] (project-akri#296)

* make sure webhook-configuration version updated in lock file (project-akri#300)

* Remove un-utilized CRD field (project-akri#290)

* remove rbac property from Instance CRD

* bump minor version to 0.5.0 for breaking change

* Rename CRD fields to be more descriptive (project-akri#297)

* change Configuration.properties to Configuration.brokerProperties

* change Instance.metadata to Instance.brokerProperties

* increase minor version due to CRD breaking change

* fix errors in user guide (project-akri#302)

* Remove udev directory mount from Agent (project-akri#304)

* Extend documentation (project-akri#303)

* Documentation fixes (project-akri#307)

A few simple fixes to the Debug Echo documentation.

Signed-off-by: Hernan Gatta <[email protected]>

* fix opc ua configuration table in docs (project-akri#309)

* use sudo when getting logs in e2e tests (project-akri#312)

* suggest background reading before discovery handler development (project-akri#310)

* Update cluster setup documentation (project-akri#308)

* lint helm chart with values (project-akri#306)

* Add documentation on setting a Configuration's `brokerProperties` (project-akri#311)

* Fix end-to-end tests (project-akri#301)

* Reduce K3s and MicroK8s eviction limits for tests [SAME VERSION] (project-akri#313)

* reduce K3s eviction limits for tests

* reduce MicroK8s limits

* Rename configuration templates (project-akri#315)

* rename configuration templates

* increase version

* Set compute resource limits and requests for all Akri components (project-akri#305)

* Extensibility example fixes [SAME VERSION] (project-akri#321)

* Use latest Rust and Tarpaulin (project-akri#318)

* use latest tarpaulin in workflow

* use latest rust in workflows

* increase version

* use previous tarpaulin version due to segfault issue

* Increase dependency minor versions where possible [SAME VERSION] (project-akri#323)

* increase cfg-if, env_logger, mockall_double, prometheus, udev, opcua-client, and rand crate minor versions

* increase version

* extend sleep in test case workflow to 45 minutes for component builds to complete (project-akri#326)

* Test e2e tests on latest K8s version [SAME VERSION] (project-akri#317)

* reference Akri's release Helm chart in documentation (project-akri#325)

* Update CHANGELOG for v0.6.5 release (project-akri#319)

* [Extensibility] HTTP protocol (branch: http-extensibility) (project-akri#135)

* Initial commit

* Working

* Correct errors & revise for Device|Discovery v2

* Working

* Should (!) work

* Typo

* Enrich

* Refine

* Fixes: project-akri#102

* Moves

* Resolved

* Revised for `dnsPolicy`

* Dockerfiles

* Added gRPC solution

* Replaced

* Kubernetes specs

* Merge

* Correct Kubernetes config filenames

* Typo

* Removed duplicate

* Standalone broker exposes no ports

* end-to-end-demo-gce.md: fixing 1 typo (project-akri#131)

Hi,
just removing the superfluous 's'
Didier

* link to codecov.io and use codecov action (project-akri#134)

* Update end-to-end-demo.md (project-akri#112)

* Update end-to-end-demo.md

Hi there
I extended the documentatio with the installation of linux-modules-extra because I had to add this package on Ubuntu 20.04 LTS (on a GCE instance): it seems that it doesn't come by default on distros / images aimed at backend servers. v4l loopback won't load if this other module is not present.
Didier

* Update end-to-end-demo.md

fixing initial text according to revision notes in PR review

* Update end-to-end-demo.md

fixing style

* Update end-to-end-demo.md

simplifying text, based on PR review by Kate

* rebase to finalize PR

* Fix codecov for pull_request_target [SAME VERSION] (project-akri#138)

* fix codecov for pull_request_target

* add anti-pull-request-* conditional

* Do not upload to codecov on PRs (project-akri#140)

* end-to-end-demo-rpi4: fixing 1 typo (project-akri#143)

Hello,
Title says it all
Didier

* end-to-end demo : fixing 1 typo (project-akri#141)

Hi there,
The title says it all
Didier

* Minor e2e demo doc flow change (project-akri#139)

* Minor flow change

* Cleanup

* Expand udev rule support (project-akri#130)

* add support for SUBSYSTEMS, KERNELS, ATTRIBUTES, DRIVERS, and TAGS fields

* fix formatting and add comments

* add recursive search for subsystems

* update udev configuration document with newly supported fields

* check child device for field before looking up hierarchy

* update version

* document how to filter for only devices with devnodes when testing

* reuse shared code

* rust fmt fixes

* add inline documentation for regex matching

* Update end-to-end-demo.md (project-akri#113)

Hi there,
I added a comment regarding the importance of the version of v4l2loopback to avoid my personal initial mistake to others: I did not realize at start that the version was so important. So I went through this ticket with the dev: umlaeute/v4l2loopback#370
Didier

Co-authored-by: bfjelds <[email protected]>

* Add sudo into udev configuration doc (project-akri#144)

* Use arm7

* Reference arm7

* Reference branch on clone

* `REPO="akri"`

* Helm template for Agent already revised

* Consistency

* Use `./version.txt` for Akri version

* Automate IMAGE updates

* Build|Push gRPC images; Add'l consistency

* Add Action to build HTTP Broker containers

* I guess `http-extensibility` not `main`

* Enable PRs to test changes to helm charts [SAME VERSION] (project-akri#146)

* enable PRs to test changes to helm charts

* handle manual job, fix push and release conditional

* trigger e2e for helm changes

* Updates references to `armv7`

* Removed `shared`  from HTTP Broker Dockerfiles

* Correct version reference for image tags

* Typo

* Adds Golang Device|Discovery and alt-gRPC

* s/println!/trace!

* Consistency

* Reflect relocation of apps

* Simplify environment

* Typo

* Consistency on repo names for HTTP apps

* Rename HTTP apps gRPC images

* GitHub Actions to build HTTP apps containers

* Configure broker security context (project-akri#148)

* make udev broker security context configurable

* update version

* change group permissions to be default in example

* fix comment with group id

* Remove privileged security context from Akri Agent (project-akri#147)

* Remove (redundant!?) aliasing

* Remove healthchecks (`/healthz`)

* Removed `akri-shared` dep

* Simplified using `strategy.matrix`

* Revised to use `strategy.matrix`

* reference macro using fully-qualified module name

* r|Microsoft|deislabs/akri

* Remove unnecessary include

* Add precision on arch being built

* Consistent image naming and v1

* Remove `/v2/` references

* Explantion of different broker implementations

* Cleanup Workflows [IGNORE INTERMEDIATE BUILDS][SAME VERSION] (project-akri#155)

* don't persist github creds and remove setup.sh from workflows

* Update CHANGELOG for release v0.0.44 (project-akri#153)

* Update CHANGELOG for release v0.0.44

* update release to better describe helm changes and supported flavors

* add note about known k3s incompat

* Pin CHANGELOG changes to the expected label

* Fix CHANGELOG typo

* Optimize build and test all supported versions (project-akri#157)

* build once, test all supported versions

* test step needs build step

* fix copy-paste error

* use startsWith instead of '==' to check kube-runtime

* for download, specifying path introduces an unwanted directory

* load the artifact containers into docker for Kubernetes

* microk8s ctr images import is mysteriously failing with 'context deadline exceeded'

* avoid k3s' crictl, add more testing versions for kubernetes & k3s

* allow downgrades for kubernetes install, try to understand microk8s image import failure

* swallow the return code of version checks

* use persist-creds=false

* disable microk8s 1.19 for now

* microk8s 1.19 requires small sleep before it is ready for ctr requests

* to ensure sequential running, we cannot skip the build-containers job (just its steps) (project-akri#159)

* Update user guide with first release tag for Akri release chart (project-akri#160)

* update user guide with first release tag for akri release chart

* reference akri release chart instead of dev chart in docs

* Remove pull_request_target triggers and minimize credential use [SAME VERSION] [IGNORE INTERMEDIATE BUILDS] (project-akri#161)

* remove dockerhub credentials from workflows

* add link to repo to intermediate containers

* remove pull_request_target

* only log into docker when pushing changes to ghcr

* Typos

* Added existing "Extensibility" preamble

* Tidy

* Replace "Extensibility"

* attempt to merge extensibility.md

i focused on the standalone to cut down on the size (the file is still 800+ lines) with a thought towards linking to some md files in http-extensibility branch for more details (on the rust grpc and golang grpc).

* tighten up to reduce size

combine device and discovery into one http server/pod, remove some comments from quoted code

* provide a few more explanations

* fix typo

* Use matrix for build-http-broker-containers.yaml

* Replace backup md file with extensibility-http-grpc.md

Create document for deeper dive into gRPC broker/client code.  This can be referenced from extensibility.md.

* update extensibility.md to be consistent 'HTTP'

* create links to http-extensibility branch

* after walkthrough, make a couple fixes

* use different curl container

busyboxplus seems to have a dns problem that manifests on k3s

* remove workflows for http-extensibility

* remove new workflows in extensibility branch

Co-authored-by: Didier Durand <[email protected]>
Co-authored-by: bfjelds <[email protected]>
Co-authored-by: Jiri Appl <[email protected]>
Co-authored-by: Kate Goldenring <[email protected]>

* add http discovery handler to the discovery handler modules folder

Co-authored-by: Didier Durand <[email protected]>
Co-authored-by: Jiayi Hu <[email protected]>
Co-authored-by: Jiayi Hu <[email protected]>
Co-authored-by: Roaa <[email protected]>
Co-authored-by: Daz Wilkin <[email protected]>
Co-authored-by: Ronan Flynn-Curran <[email protected]>
Co-authored-by: romoh <[email protected]>
Co-authored-by: Chao Zheng <[email protected]>
Co-authored-by: bfjelds <[email protected]>
Co-authored-by: Jiri Appl <[email protected]>
Co-authored-by: Hernan Gatta <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Parameterize namespace for E2E test scripts Consider implementing a validator for Configurations
5 participants