เจเจน เจฒเฉเจ เจฒเฉเจเจ เจคเฉเจ เจเจชเจจเจตเจฟเจธเจ เจฌเจพเจฐเฉ เจ
เจจเฉเจตเจพเจฆ เจเฉเจคเฉ เจจเฉเจเจพเจ เจฆเฉ เจฒเฉเฉ เจจเฉเฉฐ เจเจคเจฎ เจเจฐเจฆเจพ เจนเฉ
Kubernetes 'เจคเฉ OpenWhisk เจจเฉเฉฐ เจคเฉเจจเจพเจค เจเฉเจคเจพ เจเจพ เจฐเจฟเจนเจพ เจนเฉ
เจเฉเจ เจฆเจฟเจจเจพเจ เจฆเฉ เจฆเฉเจฐเจพเจจ, เจฎเฉเจ เจเฉฑเจ เจธเจงเจพเจฐเจจ เจ
เจคเฉ เจคเฉเจเจผ เจเฉเจธเจเจฟเฉฐเจ เจฎเฉเจฆเจพเจจ เจฌเจฃเจพเจเจฃ เจฒเจ เจเฉเจฌเจฐเจจเฉเจเจธ เจตเจฟเฉฑเจ เจเจชเจจเจตเจฟเจธเจ เจจเฉเฉฐ เจคเฉเจจเจพเจค เจเจฐเจจ เจฆเจพ เจชเฉเจฐเจฏเฉเจ เจเฉเจคเจพเฅค เจ
เจคเฉ เจเจฟเจเจเจเจฟ เจฎเฉเจ เจเฉเจฌเจฐเจจเฉเจเจธ เจฒเจ เจจเจตเจพเจ เจนเจพเจ, เจฎเฉเจฐเจพ เจฎเฉฐเจจเจฃเจพ เจนเฉ เจเจฟ เจธเจซเจฒ เจคเฉเจจเจพเจคเฉ 'เจคเฉ เจกเฉเจข เจฆเจฟเจจ เจเจฐเจ เจเฉเจคเจพ เจเจฟเจ เจธเฉเฅค IN
- เจชเฉเจเฉเจ เจฎเฉเจจเฉเจเจฐ เจจเฉเฉฐ เจเฉฐเจธเจเจพเจฒ เจเฉเจคเจพ เจเจพ เจฐเจฟเจนเจพ เจนเฉ
asdf
, เจเจฟเจธ เจคเฉเจ เจฌเจพเจ เจฆ เจ เจธเฉเจ เจเจชเจฃเฉ เจเจช เจ เฉเจ เจเจฐเจฆเฉ เจนเจพเจ~/.bash_profile
เจเจพเจ เจเจธ เจฆเฉ เจฌเจฐเจพเจฌเจฐ:
$ brew install asdf
$ [ -s "/usr/local/opt/asdf/asdf.sh" ] && . /usr/local/opt/asdf/asdf.sh
$ source ~/.bash_profile
[เจฒเฉเจจเจเจธ 'เจคเฉ เจเจธ เจเจฆเจฎ เจฆเฉ เจฒเฉเฉ เจจเจนเฉเจ เจนเฉ, เจนเจพเจฒเจพเจเจเจฟ เจฌเจฐเจฟเจ เจเจชเจฒเจฌเจง เจนเฉเฅค - เจฒเจเจญเจ เจ
เจจเฉเจตเจพเจฆเจ]
- เจชเจฒเฉฑเจเจเจจ เจเฉเฉ เจฐเจฟเจนเจพ เจนเฉ
minikube
ะธkubelet
:
$ asdf plugin-add kubectl
$ asdf plugin-add minikube
[เจฆเฉเจฌเจพเจฐเจพ, เจฒเฉเจจเจเจธ 'เจคเฉ เจเจธ เจชเจ เจจเฉเฉฐ เจเฉฑเจก เจฆเจฟเจเฅค - เจฒเจเจญเจ เจ
เจจเฉเจตเจพเจฆเจ]
- เจฎเจฟเจจเฉเจเฉเจฌ เจ เจคเฉ เจเฉเจฌเฉเจฒเฉเจ เจธเจฅเจพเจชเจฟเจค เจเจฐเฉ:
$ asdf install kubectl 1.9.0
$ asdf global kubectl 1.9.0
$ asdf install minikube 0.25.2
$ asdf global minikube 0.25.2
[เจเจพเจธ เจธเฉฐเจธเจเจฐเจฃ เจธเจฅเจพเจชเจฟเจค เจเฉเจคเฉ เจเจ เจนเจจ, เจชเจฐ เจฎเฉเจ เจฒเฉเจจเจเจธ เจฒเจ เจจเจตเฉเจจเจคเจฎ เจเจชเจฒเจฌเจง เจธเฉฐเจธเจเจฐเจฃเจพเจ 'เจคเฉ เจนเจฐ เจเฉเจเจผ เจฆเฉ เจเจพเจเจ เจเฉเจคเฉ เจนเฉ; เจฎเฉเจจเฉเฉฐ เจธเจผเฉฑเจ เจนเฉ เจเจฟ เจคเฉเจธเฉเจ เจธเฉเจฐเฉฑเจเจฟเจ
เจค เจขเฉฐเจ เจจเจพเจฒ เจจเจตเฉเจจเจคเจฎ เจเฉฐเจธเจเจพเจฒ เจเจฐ เจธเจเจฆเฉ เจนเฉเฅค - เจฒเจเจญเจ เจ
เจจเฉเจตเจพเจฆเจ]
เจฒเฉเจจเจเจธ 'เจคเฉ, เจเจน เจเจฆเจฎ เจเฉเจ เจเจธ เจคเจฐเฉเจนเจพเจ เจเฉเจคเจพ เจเจฟเจ เจนเฉ (เจธเจญ เจเฉเจ ~/bin เจตเจฟเฉฑเจ เจฐเฉฑเจเจฟเจ เจเจฟเจ เจนเฉ, เจเฉ เจเจฟ เจฎเฉเจฐเฉ PATH, เจ เจจเฉเจตเจพเจฆเจ เจฆเฉ เจจเฉเจ เจตเจฟเฉฑเจ เจธเฉเจเฉเจฌเฉฑเจง เจนเฉ):
$ curl -L0 minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && mv minikube ~/bin/
$ curl -L0 https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && chmod +x kubectl && mv kubectl ~/bin/
- เจเฉฑเจ เจฎเจฟเจจเฉเจเจฟเจเจฌ เจตเจฐเจเฉเจ เจฒ เจฎเจธเจผเฉเจจ เจฌเจฃเจพเจ (เจตเจฐเจเฉเจ เจฒ เจฌเจพเจเจธ เจชเจนเจฟเจฒเจพเจ เจคเฉเจ เจธเจฅเจพเจชเจฟเจค เจนเฉเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ):
$ minikube start --cpus 2 --memory 4096 --kubernetes-version=v1.9.0 --extra-config=apiserver.Authorization.Mode=RBAC
[เจเฉเจฎ เจฆเฉ เจจเจพเจฒ เจฎเฉเจฐเฉ เจฒเจ เจธเจญ เจเฉเจ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉ minikube start
, เจชเฉเจฐเจพเจฎเฉเจเจฐเจพเจ เจคเฉเจ เจฌเจฟเจจเจพเจ เจ
เจคเฉ เจชเฉเจฐเจต-เจจเจฟเจฐเจงเจพเจฐเจค เจฎเฉเฉฑเจฒเจพเจ เจฆเฉ เจจเจพเจฒเฅค - เจฒเจเจญเจ เจ
เจจเฉเจตเจพเจฆเจ]
$ minikube start
minikube v1.5.2 on Debian 8.11
Automatically selected the 'virtualbox' driver
Downloading VM boot image ...
> minikube-v1.5.1.iso.sha256: 65 B / 65 B [--------------] 100.00% ? p/s 0s
> minikube-v1.5.1.iso: 143.76 MiB / 143.76 MiB [-] 100.00% 5.63 MiB p/s 26s
Creating virtualbox VM (CPUs=2, Memory=4096MB, Disk=20000MB) ...
Preparing Kubernetes v1.16.2 on Docker '18.09.9' ...
Downloading kubelet v1.16.2
Downloading kubeadm v1.16.2
Pulling images ...
Launching Kubernetes ... Waiting for: apiserver
Done! kubectl is now configured to use "minikube"
- เจกเฉเจเจฐ เจตเจฟเฉฑเจ เจจเฉเจเจตเจฐเจ เจจเฉเฉฐ เจ เจธเจผเจฒเฉเจฒ เจฎเฉเจก เจตเจฟเฉฑเจ เจฌเจฆเจฒเจฃเจพ:
$ minikube ssh -- sudo ip link set docker0 promisc on
- เจเฉฑเจ เจจเฉเจฎเจธเจชเฉเจธ เจฌเจฃเจพเจ เจ เจคเฉ เจตเจฐเจเจฐ เจจเฉเจก เจจเฉเฉฐ เจฎเจพเจฐเจ เจเจฐเฉ:
$ kubectl create namespace openwhisk
$ kubectl label nodes --all openwhisk-role=invoker
- เจ เจธเฉเจ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจฆเฉ เจธเจฎเฉฑเจเจฐเฉ เจชเฉเจฐเจพเจชเจค เจเจฐเจฆเฉ เจนเจพเจ เจ เจคเฉ mycluster.yaml เจซเจพเจเจฒ เจตเจฟเฉฑเจ เจชเฉเจฐเจตเฉเจธเจผ เจฒเจ เจเจฟเจธเจฎ เจจเฉเฉฐ เจเจตเจฐเจฐเจพเจเจก เจเจฐเจฆเฉ เจนเจพเจ:
$ git clone https://github.com/apache/incubator-openwhisk-deploy-kube.git
$ cd incubator-openwhisk-deploy-kube/
$ cat << "EOF" > mycluster.yaml
whisk:
ingress:
type: NodePort
api_host_name: 192.168.99.100
api_host_port: 31001
nginx:
httpsNodePort: 31001
EOF
- เจนเฉเจฒเจฎ เจจเฉเฉฐ เจธเจฅเจพเจชเจฟเจค เจเจฐเฉ เจ เจคเฉ เจเจธเจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเจธเจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเฉ:
$ brew install kubernetes-helm
$ helm init # init Helm Tiller, ะฝะต ะฝัะถะฝะพ ะฝะฐ Helm v3+
$ kubectl get pods -n kube-system # verify that tiller-deploy is in the running state, ะฝะต ะฝัะถะฝะพ ะฝะฐ helm v3+
$ kubectl create clusterrolebinding tiller-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default
$ helm install ./openwhisk/helm/ --namespace=openwhisk -f mycluster.yaml
[เจจเจตเฉเจจเจคเจฎ เจธเฉฐเจธเจเจฐเจฃเจพเจ เจตเจพเจฒเฉ เจฒเฉเจจเจเจธ 'เจคเฉ (v3.0.1 เจเจชเจฒเจฌเจง เจธเฉ) เจเจน เจฅเฉเฉเฉเจนเจพ เจตเฉฑเจเจฐเจพ เจนเฉเจตเฉเจเจพเฅค - เจฒเจเจญเจ เจ
เจจเฉเจตเจพเจฆเจ]
$ curl -L0 https://get.helm.sh/helm-v3.0.1-linux-amd64.tar.gz | tar -xzvf - linux-amd64/helm --strip-components=1; sudo mv helm /usr/local/bin
$ kubectl create clusterrolebinding tiller-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default
$ helm install ./openwhisk/helm/ --namespace=openwhisk --generate-name -f mycluster.yaml
- เจ เจธเฉเจ เจเจพเจเจ เจเจฐเจฆเฉ เจนเจพเจ เจเจฟ เจธเจญ เจเฉเจ เจตเจง เจเจฟเจ เจนเฉ (STATUS = เจเฉฑเจฒ เจฐเจฟเจนเจพ เจนเฉ เจเจพเจ เจชเฉเจฐเจพ เจนเฉเจเจ):
$ kubectl get pods -n openwhisk
NAME READY STATUS RESTARTS AGE
openwhisk-1576070780-alarmprovider-6868dc694-plvpf 1/1 Running 1 1d5h
openwhisk-1576070780-apigateway-8d56f4979-825hf 1/1 Running 1 1d5h
openwhisk-1576070780-cloudantprovider-544bb46596-9scph 1/1 Running 1 1d5h
openwhisk-1576070780-controller-0 1/1 Running 2 1d5h
openwhisk-1576070780-couchdb-7fd7f6c7cc-42tw6 1/1 Running 1 1d5h
openwhisk-1576070780-gen-certs-z9nsb 0/1 Completed 0 1d5h
openwhisk-1576070780-init-couchdb-r2vmt 0/1 Completed 0 1d5h
openwhisk-1576070780-install-packages-27dtr 0/1 Completed 0 1d4h
openwhisk-1576070780-invoker-0 1/1 Running 1 1d5h
openwhisk-1576070780-kafka-0 1/1 Running 1 1d5h
openwhisk-1576070780-kafkaprovider-f8b4cf4fc-7z4gt 1/1 Running 1 1d5h
openwhisk-1576070780-nginx-6dbdbf69bc-5x76n 1/1 Running 1 1d5h
openwhisk-1576070780-redis-cfd8756f4-hkrt6 1/1 Running 1 1d5h
openwhisk-1576070780-wskadmin 1/1 Running 1 1d5h
openwhisk-1576070780-zookeeper-0 1/1 Running 1 1d5h
wskopenwhisk-1576070780-invoker-00-1-prewarm-nodejs10 1/1 Running 0 61s
wskopenwhisk-1576070780-invoker-00-2-prewarm-nodejs10 1/1 Running 0 61s
wskopenwhisk-1576070780-invoker-00-3-whisksystem-invokerhealtht 1/1 Running 0 59s
- wsk เจจเฉเฉฐ เจเฉฐเจฎ เจเจฐเจจ เจฒเจ เจธเฉฐเจฐเจเจฟเจค เจเจฐเจจเจพ:
$ wsk property set --apihost 192.168.99.100:31001
$ wsk property set --auth 23bc46b1-71f6-4ed5-8c54-816aa4f8c502:123zO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP
เจ เจธเฉเจ เจเจพเจเจเจฆเฉ เจนเจพเจ:
$ wsk -i list
Entities in namespace: default
packages
actions
triggers
rules
เจธเจฎเฉฑเจธเจฟเจเจตเจพเจ เจ เจคเฉ เจเจจเฉเจนเจพเจ เจฆเฉ เจนเฉฑเจฒ
getsockopt: เจเฉเจจเฉเจเจธเจผเจจ เจคเฉเจ เจเจจเจเจพเจฐ เจเจฐ เจฆเจฟเฉฑเจคเจพ เจเจฟเจ
$ wsk -i list
error: Unable to obtain the list of entities for namespace 'default': Get http://192.168.99.100:31001/api/v1/namespaces/_/actions?limit=0&skip=0: dial tcp 192.168.99.100:31001: getsockopt: connection refused
เจเจพเจเจ เจเจฐ เจฐเจฟเจนเจพ เจนเฉ เจเจฟ เจกเฉฑเจฌเฉ เจจเฉเจฎเจธเจชเฉเจธ เจตเจฟเฉฑเจ เจนเจจ openwhisk
เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ Running
, เจเจฟเจเจเจเจฟ เจเจ เจตเจพเจฐ เจเจน เจเจฒเจคเฉเจเจ เจจเจพเจฒ เจเจฐเฉเจธเจผ เจนเฉ เจเจพเจเจฆเจพ เจนเฉ CreateContainerConfigError
.
เจเจจเจตเฉเจเจฐ เจ เจเฉ เจตเฉ เจธเจผเฉเจฐเฉ เจเจฐ เจฐเจฟเจนเจพ เจนเฉ โ Init:1/2
เจตเฉฑเจ-เจตเฉฑเจ เจฐเจจเจเจพเจเจฎ เจตเจพเจคเจพเจตเจฐเจฃเจพเจ เจจเฉเฉฐ เจกเจพเจเจจเจฒเฉเจก เจเจฐเจจ เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจตเจฟเฉฑเจ เจฒเฉฐเจฎเจพ เจธเจฎเจพเจ เจฒเฉฑเจ เจธเจเจฆเจพ เจนเฉเฅค เจเฉเจเจผเจพเจ เจจเฉเฉฐ เจคเฉเจเจผ เจเจฐเจจ เจฒเจ, เจคเฉเจธเฉเจ เจซเจพเจเจฒ เจตเจฟเฉฑเจ เจเฉฑเจ เจเฉเจเฉ เจเฉเจคเฉ เจเฉฑเจเฉ-เจเฉฑเจ เจธเฉเจเฉ เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐ เจธเจเจฆเฉ เจนเฉ mycluster.yaml
:
whisk:
runtimes: "runtimes-minimal-travis.json"
เจจเจพเจฎ เจฆเฉ เจจเจพเจฒ เจเฉฐเจเฉเจจเจฐ -เจชเฉเจเฉเจ เจเฉฐเจธเจเจพเจฒ เจเจฐเฉ- เจเจฒเจคเฉ เจฒเจ เจเจฐเฉเจธเจผ
เจเฉเจตเจฃเจคเจพ เจเฉเจธเจเจพเจ เจฒเจ เจธเจฎเจพเจ-เจ เฉฐเจคเจฐเจพเจฒ เจตเจงเจพเจเฅค
Knative เจเฉฑเจคเฉ OpenWhisk เจเฉฐเจธเจเจพเจฒ เจเจฐเจจเจพ
เจชเฉเจฐเฉเจคเฉ เจฆเฉเจธเจพเจ เจจเฉ เจจเฉเจเจฟเจต เจฌเจฟเจฒเจก เจ
เจคเฉ เจฌเจฟเจฒเจก เจเฉเจเจชเจฒเฉเจเจธ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ, IBM เจเจฒเจพเจเจก เจตเจฟเฉฑเจ เจเฉฑเจ เจเจฒเฉฑเจธเจเจฐ เจฆเฉ เจธเจฟเจเจฐ 'เจคเฉ, เจ
เจคเฉ เจจเจพเจฒ เจนเฉ เจเฉฑเจ เจจเจฟเจฏเจฎเจค เจฎเจฟเจจเฉเจเจฟเจเจฌ 'เจคเฉ เจธเจฅเจพเจชเจจเจพ เจเฉเจคเฉเฅค เจฎเฉเจ เจเจฟเจตเฉเจ เจฆเฉ เจเจงเจพเจฐ 'เจคเฉ, เจฎเจฟเจจเจเฉเจฌเฉ เจฆเฉ เจธเจฟเจเจฐ 'เจคเฉ เจตเฉ เจธเจฅเจพเจชเจฟเจค เจเจฐเจพเจเจเจพ
$ curl -L0 https://github.com/solo-io/gloo/releases/download/v1.2.10/glooctl-linux-amd64; chmod +x glooctl-linux-amd64; mv glooctl-linux-amd64 ~/bin
$ glooctl install knative
$ kubectl get pods -n knative-serving
NAME READY STATUS RESTARTS AGE
activator-77fc555665-rvrst 1/1 Running 0 2m23s
autoscaler-5c98b7c9b6-x8hh4 1/1 Running 0 2m21s
autoscaler-hpa-5cfd4f6845-w87kq 1/1 Running 0 2m22s
controller-7fd74c8f67-tprm8 1/1 Running 0 2m19s
webhook-74847bb77c-txr2g 1/1 Running 0 2m17s
$ kubectl get pods -n gloo-system
NAME READY STATUS RESTARTS AGE
discovery-859d7fbc9c-8xhvh 1/1 Running 0 51s
gloo-545886d9c6-85mwt 1/1 Running 0 51s
ingress-67d4996d75-lkkmw 1/1 Running 0 50s
knative-external-proxy-767dfd656c-wwv2z 1/1 Running 0 50s
knative-internal-proxy-6fdddcc6b5-7vqd8 1/1 Running 0 51s
Knative เจฆเฉ เจธเจฟเจเจฐ 'เจคเฉ OpenWhisk เจฌเจฃเจพเจเจฃเจพ เจ
เจคเฉ เจเจฒเจพเจเจฃเจพ
- เจธเจฎเฉฑเจเจฐเฉ เจชเฉเจฐเจพเจชเจค เจเจฐ เจฐเจฟเจนเจพ เจนเฉ
เจเจน เจฐเจฟเจชเฉเจเจผเจเจฐเฉ :
$ git clone https://github.com/tektoncd/catalog/
$ cd catalog/openwhisk
- เจ เจธเฉเจ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉเจฐเฉเจเจฌเจฒ เจฆเฉ เจคเฉเจฐ 'เจคเฉ เจฐเจเจฟเจธเจเจฐเฉ เจคเฉฑเจ เจชเจนเฉเฉฐเจ เจเจฐเจจ เจฒเจ เจกเฉเจเจพ เจธเฉเจ เจเจฐเจฆเฉ เจนเจพเจ เจ เจคเฉ เจเจนเจจเจพเจ เจจเฉเฉฐ เจเฉเจฌเจฐเจจเฉเจเจธ เจธเฉเจเจฐเฉเจ เจตเจเฉเจ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจเจฐเจฆเฉ เจนเจพเจ:
$ export DOCKER_USERNAME=<your docker hub username>
$ export DOCKER_PASSWORD=<your docker hub password>
$ sed -e 's/${DOCKER_USERNAME}/'"$DOCKER_USERNAME"'/' -e 's/${DOCKER_PASSWORD}/'"$DOCKER_PASSWORD"'/' docker-secret.yaml.tmpl > docker-secret.yaml
$ kubectl apply -f docker-secret.yaml
เจ เจธเฉเจ เจเจพเจเจเจฆเฉ เจนเจพเจ:
$ kubectl get secret
NAME TYPE DATA AGE
dockerhub-user-pass kubernetes.io/basic-auth 2 21s
- เจตเจพเจคเจพเจตเจฐเจฃ เจฌเจฃเจพเจเจฃ เจฒเจ เจเฉฑเจ เจเจพเจคเจพ เจฌเจฃเจพเจ:
$ kubectl apply -f service-account.yaml
เจ เจธเฉเจ เจเจพเจเจเจฆเฉ เจนเจพเจ:
$ kubectl get serviceaccount/openwhisk-runtime-builder
NAME SECRETS AGE
openwhisk-runtime-builder 2 31m
- OpenWhisk เจฒเจ เจเฉฑเจ เจเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจเจฃ เจฒเจ เจเฉฑเจ เจเจพเจฐเจ เจฌเจฃเจพเจ
$ kubectl apply -f openwhisk.yaml
task.tekton.dev/openwhisk created
- เจ เจธเฉเจ เจเจฟเฉฑเจคเจฐ เจจเฉเฉฐ เจฌเจฃเจพเจเจฃ เจฒเจ เจเฉฐเจฎ เจเจฒเจพเจเจเจฆเฉ เจนเจพเจ (เจเจฆเจพเจนเจฐเจฃ เจตเจเฉเจ เจจเฉเจกเจเฉเจเจธ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ):
เจธเจฎเฉฑเจเจฐเฉ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ taskrun.yaml เจซเจพเจเจฒ เจฌเจฃเจพเจ:
# Git Pipeline Resource for OpenWhisk NodeJS Runtime
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: openwhisk-nodejs-runtime-git
spec:
type: git
params:
- name: revision
value: master
- name: url
value: https://github.com/apache/openwhisk-runtime-nodejs.git
---
# Image Pipeline Resource for OpenWhisk NodeJS Sample Application
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: openwhisk-nodejs-helloworld-image
spec:
type: image
params:
- name: url
value: docker.io/${DOCKER_USERNAME}/openwhisk-nodejs-helloworld
---
# Task Run to build NodeJS image with the action source
apiVersion: tekton.dev/v1alpha1
kind: TaskRun
metadata:
name: openwhisk-nodejs-helloworld
spec:
serviceAccountName: openwhisk-runtime-builder
taskRef:
name: openwhisk
inputs:
resources:
- name: runtime-git
resourceRef:
name: openwhisk-nodejs-runtime-git
params:
- name: DOCKERFILE
value: "./runtime-git/core/nodejs10Action/knative/Dockerfile"
- name: OW_ACTION_NAME
value: "nodejs-helloworld"
- name: OW_ACTION_CODE
value: "function main() {return {payload: 'Hello World!'};}"
- name: OW_PROJECT_URL
value: ""
outputs:
resources:
- name: runtime-image
resourceRef:
name: openwhisk-nodejs-helloworld-image
---
เจ เจธเฉเจ เจเจธ เจซเจพเจเจฒ เจฒเจ เจฎเฉเจเฉเจฆเจพ เจกเฉเจเจพ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจฆเฉ เจนเจพเจ:
$ sed 's/${DOCKER_USERNAME}/'"$DOCKER_USERNAME"'/' -i taskrun.yaml
เจ เจธเฉเจ เจ เจฐเจเจผเฉ เจฆเจฟเฉฐเจฆเฉ เจนเจพเจ:
$ kubectl apply -f taskrun.yaml
pipelineresource.tekton.dev/openwhisk-nodejs-runtime-git created
pipelineresource.tekton.dev/openwhisk-nodejs-helloworld-image created
taskrun.tekton.dev/openwhisk-nodejs-helloworld created
เจเฉฐเจฎ เจฆเฉ เจเจพเจเจ เจเจฐเจจ เจตเจฟเฉฑเจ เจชเฉเจก เจฆเจพ เจจเจพเจฎ เจชเฉเจฐเจพเจชเจค เจเจฐเจจเจพ เจ เจคเฉ เจเจธเจฆเฉ เจธเจฅเจฟเจคเฉ เจจเฉเฉฐ เจตเฉเจเจฃเจพ เจธเจผเจพเจฎเจฒ เจนเฉเฅค เจคเฉเจธเฉเจ เจนเจฐเฉเจ เจชเฉเจพเจ เจฆเจพ เจเจเจเจผเฉเจเจฟเจเจธเจผเจจ เจฒเฉเจ เจตเฉ เจฆเฉเจ เจธเจเจฆเฉ เจนเฉ, เจเจฆเจพเจนเจฐเจจ เจฒเจ:
$ kubectl get taskrun
NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME
openwhisk-nodejs-helloworld True Succeeded 5m15s 44s
$ kubectl get pod openwhisk-nodejs-helloworld-pod-4640d3
NAME READY STATUS RESTARTS AGE
openwhisk-nodejs-helloworld-pod-4640d3 0/6 Completed 0 5m20s
$ kubectl logs openwhisk-nodejs-helloworld-pod-4640d3 -c step-git-source-openwhisk-nodejs-runtime-git-r8vhr
{"level":"info","ts":1576532931.5880227,"logger":"fallback-logger","caller":"logging/config.go:69","msg":"Fetch GitHub commit ID from kodata failed: open /var/run/ko/refs/heads/master: no such file or directory"}
{"level":"info","ts":1576532936.538926,"logger":"fallback-logger","caller":"git/git.go:81","msg":"Successfully cloned https://github.com/apache/openwhisk-runtime-nodejs.git @ master in path /workspace/runtime-git"}
{"level":"warn","ts":1576532936.5395331,"logger":"fallback-logger","caller":"git/git.go:128","msg":"Unexpected error: creating symlink: symlink /tekton/home/.ssh /root/.ssh: file exists"}
{"level":"info","ts":1576532936.8202565,"logger":"fallback-logger","caller":"git/git.go:109","msg":"Successfully initialized and updated submodules in path /workspace/runtime-git"}
เจเจเจเจผเฉเจเจฟเจเจธเจผเจจ เจคเฉเจ เจฌเจพเจ เจฆ, เจธเจพเจกเฉ เจเฉเจฒ เจฐเจเจฟเจธเจเจฐเฉ เจตเจฟเฉฑเจ เจเฉฑเจ เจเจฟเฉฑเจคเจฐ เจนเฉเจตเฉเจเจพ เจเฉ kn เจเจชเจฏเฉเจเจคเจพ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจคเฉเจจเจพเจค เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉ, เจจเฉเจเจฟเจต เจธเฉเจตเจพเจตเจพเจ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจ เจฒเจ เจคเจฟเจเจฐ เจเฉเจคเจพ เจเจฟเจ เจนเฉ, เจเจฆเจพเจนเจฐเจจ เจฒเจ:
kn service create nodejs-helloworld --image docker.io/${DOCKER_USERNAME}/openwhisk-nodejs-helloworld
Service 'nodejs-helloworld' successfully created in namespace 'default'.
Waiting for service 'nodejs-helloworld' to become ready ... OK
Service URL:
http://nodejs-helloworld.default.example.com
เจเฉเจเจฐ เจคเฉเจธเฉเจ เจเจฒเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉ, เจคเจพเจ เจคเฉเจธเฉเจ เจเจธเจฆเฉ เจเจพเจฐเจเจธเจผเฉเจฒเจคเจพ เจจเฉเฉฐ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเฉเจ เจธเจเจฆเฉ เจนเฉ:
$ curl -H "Host: nodejs-helloworld.default.example.com" -X POST $(glooctl proxy url --name knative-external-proxy)
{"OK":true}
$ curl -H "Host: nodejs-helloworld.default.example.com" -X POST $(glooctl proxy url --name knative-external-proxy)
{"payload":"Hello World!"}
เจฒเฉเฉ เจตเจฟเฉฑเจ เจนเฉเจฐ เจฒเฉเจ
เจธเจฐเฉเจค: www.habr.com