diff --git a/read-kubernetes-events/README.md b/read-kubernetes-events/README.md index 60f0be1..01d5d47 100644 --- a/read-kubernetes-events/README.md +++ b/read-kubernetes-events/README.md @@ -282,5 +282,8 @@ Output should be kubectl delete ns kube-events ``` +## Step 3 - Running in kubernetes cluster + + ## Next steps - Explore additional [samples](../README.md#Samples-in-this-repository) and deploy them locally or on Kubernetes. diff --git a/read-kubernetes-events/deploy/kubernetes.yaml b/read-kubernetes-events/deploy/kubernetes.yaml new file mode 100644 index 0000000..16ce88b --- /dev/null +++ b/read-kubernetes-events/deploy/kubernetes.yaml @@ -0,0 +1,12 @@ +apiVersion: dapr.io/v1alpha1 +kind: Component +metadata: + name: kube-events + namespace: kube-events +spec: + type: bindings.kubernetes + metadata: + - name: namespace + value: kube-events + - name: resyncPreiodInSec + value: "5" \ No newline at end of file diff --git a/read-kubernetes-events/deploy/node.yaml b/read-kubernetes-events/deploy/node.yaml new file mode 100644 index 0000000..ec039f6 --- /dev/null +++ b/read-kubernetes-events/deploy/node.yaml @@ -0,0 +1,74 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + namespace: kube-events + name: events-reader +rules: +- apiGroups: [""] # "" indicates the core API group + resources: ["events"] + verbs: ["get", "watch", "list"] + +--- +apiVersion: rbac.authorization.k8s.io/v1 +# This role binding allows "jane" to read pods in the "default" namespace. +# You need to already have a Role named "pod-reader" in that namespace. +kind: RoleBinding +metadata: + name: read-events + namespace: kube-events +subjects: +# You can specify more than one "subject" +- kind: ServiceAccount + name: default + namespace: kube-events +roleRef: + # "roleRef" specifies the binding to a Role / ClusterRole + kind: Role #this must be Role or ClusterRole + name: events-reader # this must match the name of the Role or ClusterRole you wish to bind to + apiGroup: "" + +--- +kind: Service +apiVersion: v1 +metadata: + name: events-nodeapp + namespace: kube-events + labels: + app: node +spec: + selector: + app: node + ports: + - protocol: TCP + port: 80 + targetPort: 3000 + type: LoadBalancer + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: events-nodeapp + namespace: kube-events + labels: + app: node +spec: + replicas: 1 + selector: + matchLabels: + app: node + template: + metadata: + labels: + app: node + annotations: + dapr.io/enabled: "true" + dapr.io/app-id: "events-nodeapp" + dapr.io/app-port: "3000" + spec: + containers: + - name: node + image: dapriosamples/k8s-events-node:edge + ports: + - containerPort: 3000 + imagePullPolicy: Always diff --git a/read-kubernetes-events/makefile b/read-kubernetes-events/makefile new file mode 100644 index 0000000..23d6438 --- /dev/null +++ b/read-kubernetes-events/makefile @@ -0,0 +1,52 @@ +DOCKER_IMAGE_PREFIX ?=k8s-events- +APPS ?=node + +SAMPLE_REGISTRY ?=docker.io/dapriosamples +REL_VERSION ?=edge + +# Add latest tag if LATEST_RELEASE is true +LATEST_RELEASE ?= + +# Docker image build and push setting +DOCKER:=docker +DOCKERFILE:=Dockerfile + +.PHONY: build + +SAMPLE_APPS:=$(foreach ITEM,$(APPS),$(DOCKER_IMAGE_PREFIX)$(ITEM)) +build: $(SAMPLE_APPS) + +# Generate docker image build targets +# Params: +# $(1): app name +# $(2): tag name +define genDockerImageBuild +.PHONY: $(DOCKER_IMAGE_PREFIX)$(1) +$(DOCKER_IMAGE_PREFIX)$(1): + $(DOCKER) build -f $(1)/$(DOCKERFILE) $(1)/. -t $(SAMPLE_REGISTRY)/$(DOCKER_IMAGE_PREFIX)$(1):$(2) +endef + +# Generate docker image build targets +$(foreach ITEM,$(APPS),$(eval $(call genDockerImageBuild,$(ITEM),$(REL_VERSION)))) + +# push docker image to the registry +.PHONY: push +PUSH_SAMPLE_APPS:=$(foreach ITEM,$(APPS),push-$(DOCKER_IMAGE_PREFIX)$(ITEM)) +push: $(PUSH_SAMPLE_APPS) + +# Generate docker image push targets +# Params: +# $(1): app name +# $(2): tag name +define genDockerImagePush +.PHONY: push-$(DOCKER_IMAGE_PREFIX)$(1) +push-$(DOCKER_IMAGE_PREFIX)$(1): + $(DOCKER) push $(SAMPLE_REGISTRY)/$(DOCKER_IMAGE_PREFIX)$(1):$(2) +ifeq ($(LATEST_RELEASE),true) + $(DOCKER) tag $(SAMPLE_REGISTRY)/$(DOCKER_IMAGE_PREFIX)$(1):$(2) $(SAMPLE_REGISTRY)/$(DOCKER_IMAGE_PREFIX)$(1):latest + $(DOCKER) push $(SAMPLE_REGISTRY)/$(DOCKER_IMAGE_PREFIX)$(1):latest +endif +endef + +# Generate docker image push targets +$(foreach ITEM,$(APPS),$(eval $(call genDockerImagePush,$(ITEM),$(REL_VERSION)))) diff --git a/read-kubernetes-events/node/Dockerfile b/read-kubernetes-events/node/Dockerfile new file mode 100644 index 0000000..fc5ffc7 --- /dev/null +++ b/read-kubernetes-events/node/Dockerfile @@ -0,0 +1,6 @@ +FROM node:8-alpine +WORKDIR /app +COPY . . +RUN npm install +EXPOSE 3000 +CMD [ "node", "app.js" ]