Skip to content

`HNews` gets all the latest Hacker News news articles links above the set limit of score, descendents, type of post and shows the links in a K8s custom resource

License

Notifications You must be signed in to change notification settings

vadasambar/hnews

Folders and files

NameName
Last commit message
Last commit date
May 26, 2022
May 27, 2022
May 26, 2022
May 9, 2022
May 25, 2022
May 9, 2022
May 9, 2022
May 27, 2022
May 9, 2022
May 9, 2022
May 9, 2022
May 27, 2022
May 9, 2022
May 9, 2022
May 9, 2022

Repository files navigation

HNews

HNews is a Kubernetes Custom Resource you can use to query HNews articles that you want using filters.

Example:

apiVersion: apps.vadasambar.com/v1
kind: HNews
metadata:
  name: hnews-sample
spec:
  filter:
    score: ">300"
    limit: 6
    descendents: ">10"

Result:

$ kubectl get hnews
NAME           TYPE    SCORE   LIMIT   DESCENDENTS   LASTSYNCEDAT
hnews-sample   story   >300    6       >10           2022-05-26T04:28:09Z
apiVersion: apps.vadasambar.com/v1
kind: HNews
metadata:
  ...
  name: hnews-sample
  namespace: default
  ...
spec:
  filter:
    descendents: '>10'
    limit: 6
    score: '>300'
    type: story
status:
  lastSyncedAt: "2022-05-26T04:29:03Z"
  link:
  - article_url: https://www.ftc.gov/business-guidance/blog/2022/05/twitter-pay-150-million-penalty-allegedly-breaking-its-privacy-promises-again
    descendents: 247
    hnews_url: https://news.ycombinator.com/item?id=31510865
    score: 904
  - article_url: ""
    descendents: 1640
    hnews_url: https://news.ycombinator.com/item?id=31503201
    score: 742
  - article_url: ""
    descendents: 144
    hnews_url: https://news.ycombinator.com/item?id=31508009
    score: 456
  - article_url: https://uxdesign.cc/the-forgotten-benefits-of-low-tech-user-interfaces-57fdbb6ac83
    descendents: 385
    hnews_url: https://news.ycombinator.com/item?id=31502193
    score: 365
  - article_url: https://github.com/SymbianSource
    descendents: 186
    hnews_url: https://news.ycombinator.com/item?id=31491744
    score: 428
  - article_url: https://www.theglobeandmail.com/canada/article-the-great-junk-transfer-inheritance-decluttering-canada/
    descendents: 419
    hnews_url: https://news.ycombinator.com/item?id=31499766
    score: 443

How to use filter?

$ kubectl explain hnews.spec.filter
KIND:     HNews
VERSION:  apps.vadasambar.com/v1

RESOURCE: filter <Object>

DESCRIPTION:
     Filter allows you to filter and get the Hacker News articles you want

FIELDS:
   descendents  <string> -required-
     Number of direct (first level) comments in the article. Specify it like: descendents:
     ">=10", descendents: "<10", descendents: "=10", descendents: "!=10"

   limit        <integer> -required-
     Number of Hacker News articles you want.

   score        <string> -required-
     Score of Hacker News articles you are looking for. Specify it like: score:
     ">=10", score: "<10", score: "=10", score: "!=10"

   type <string>
     Type of Hacker News articles you are looking for. Has to be either of:
     job,story,comment,poll,pollopt

To run it locally

  1. Install the CRDs first:
make install
  1. And then run the controller
make run

That's all. Make sure your kube context is pointing to the correct cluster. 3. To uninstall, just do

make uninstall
# Ctrl+c on make run to stop the controller
  1. To run tests,
make test

If you want to deploy it on your local k3d cluster:

  1. Push the image to local registry (docs)
docker ps
...
17bf269d0f1e   rancher/k3s:v1.20.6-k3s1   "/bin/k3s server --k…"   17 minutes ago   Up 16 minutes                                                                    k3d-hnews2-server-0
d2b3349f12c0   registry:2                 "/entrypoint.sh /etc…"   17 minutes ago   Up 15 minutes   0.0.0.0:38181->5000/tcp                                          k3d-hnews2-registry

Note the registry port-forward 0.0.0.0:38181

  1. Push to local k3d registry
make docker-build IMG=localhost:38181/hnews-controller:latest
...
make docker-push  IMG=localhost:38181/hnews-controller:latest
...
  1. Use the image
make deploy  IMG=hnews-controller:latest

Note that you don't need to use localhost:38181 in the above command.

To run it in your remote cluster

  1. Build the image
make docker-build IMG=<remote-docker-registry>/hnews-controller:latest
  1. Push the image
make docker-push IMG=<remote-docker-registry>/hnews-controller:latest # IMG should be same as the one used in `make docker-build`
  1. Deploy the manifests
make deploy IMG=<remote-docker-registry>/hnews-controller:latest # IMG should be the same as one used in `make docker-build` amd `make docker-push`

About

`HNews` gets all the latest Hacker News news articles links above the set limit of score, descendents, type of post and shows the links in a K8s custom resource

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published