Kubernetes ืืคืื ืืื ืกืคืง ืืคืืืคืืจืื ืืืืืื ื ืืืช ืืคืจืืกืช ืืืืืืช. ืืื ืืกืคืง ืืช ืืืืืืช ืืฉืืื ืืืขื ืืื ืืืจ ืืืืฆืขืืช ืืืฉืงื ื-API ืฉืื ืืืืงืจืื ืืืืชืืืื ืืืฉืืช ืฉืืจืืืืื ืืช ืืืฉืงื ื-API ืฉืื ืขื ืืฉืืืื ืืืชืืืื ืืืฉืืช.
ืขื ืืืช, ืืืฉืชืืฉ ืขืืืื ืืืื ืืงืื ืืืืืืช ืืคืืจืืืช ืืืื ืืื ืืืืืง ืืคืจืืก, ืืืืืืจ, ืื ืื ืืืืชืืื ืืืฉืืืื. ืืขืืืช ืฉื ืงื ื ืืืื, ืืื ื ืืืจืืืช ืชื ืืขื ื ืฉืืจืืช ืืฉืืงืืื ืฉื ืืืฉืชืืฉ. ืื ืืืืื ืืช Kubernetes ืืคืืืคืืจืืืช ืงืื ืื ืฆืืื ืืืืช ืืฉืืจืืช (PaaS), ืืื Cloud Foundry ื-Heroku.
ืืคืืืคืืจืืืช ืืืฉืง ืืฉืชืืฉ ืคืฉืื ืืืืืื ืืช ืืืคืชืื ืืคืืืงืฆืืืช ืืขืืกืงืื ืืจืื ืืืงืืช ืืคืืืงืฆืืืช ืืืืืืช. ื ืืชืื, ืคืจืืกื ืืืืืื ืื ืืืืื ืืฉืงืืคืืช ืืืฉืชืืฉ ืขื ืืื ืืขืจืืช ื-PaaS ืืืกืืกืืช.
ืืจืืืช ืืขืืืื ืฉื ืืงืืจ ืืกืคืื ื ืืืืคืืช ืขื ืืื PaaS ืขื ืืื ืืฆืืจืช ืชืืื ืช ืืืื ืืืชืืืช ืืืฉืืช, ืคืจืืกืชื, ืืืืจืช ื ืชืื ืืืฉ ืืชืช-ืืืืืื DNS ืืชืขืืืจื ื ืื ืกืช. ืื ืื ืืืคืขื ืืคืงืืื git push
.
Kubernetes (ืืืืื ื) ืืกืคืงืช ืจืง ืืช ืืื ื ืืื ืืื ืืืจืืืืืช ืืคืืืคืืจืืืช ืืืื, ืืืฉืืืจื ืืช ืืงืืืื ืืืคืฉืืช ืืขืฉืืช ืืช ืืขืืืื ืืขืฆืื. ืึตืื
Kubernetes ืืื ืคืืืคืืจืื ืืื ืืืช ืคืืืคืืจืืืช. ืืืืงืื ืืืื ืืืืชืจ ืืืชืืื, ืืื ืื ืืกืืื.
ืืชืืฆืื ืืื, ืื ื ืจืืืื ืืืืจื ืฉื ืื ืืืช Kubernetes, ืืื ืื ืืืจืืช ืืืจืื ืฉืื ืกืืช ืืืฆืืจ PaaS ืขืืืจ Kubernetes, ืืืื OpenShift ื-Rancher. ืืชืื ืฉืืง ื-Kube-PaaS ืืฆืืื, Knative, ืฉืืืงืื ืืืืื 2018 ืขื ืืื ืืืื ื-Pivotal, ื ืื ืกืช ืืืืจื.
Knative ืืื ืฉืืชืืฃ ืคืขืืื ืืื ืืืื ื-Pivotal, ืขื ืืขื ืขืืจื ืืืืจืืช ืืืจืืช ืืื IBM, RedHat ื-Solo.im. ืืื ืืฆืืข ืืืจืื ืืืืื ืฉื PaaS ื-Kubernetes ืขื ืชืืืื ืืืฉืืจื ืืจืืฉืื ื ืขืืืจ ืืืฉืืืื ืืืืกืกื ืืืฉืื ืืื ืฉืจืช. ืฉืื ืืื ืื ืืืช Kubernetes, Knative ืืืชืงื ืืชืืกืฃ ืืื ืืฉืืื Kubernetes ืชืืื ืืืืืืจ ืืืืฆืขืืช ืืฉืืื ืืฉืชืืฉ.
ืื ืื ืงื ืืืื?
Knative ืืชืืืจ ื"ืคืืืคืืจืื ืืืืกืกืช Kubernetes ืืืกืคืงื โโืื ืืืื ืขืืืกื ืขืืืื ืืืืฆืขืืช ืืืฉืื ืืืืจื ื ืืื ืฉืจืชืื." Knative, ืืืื ืฉืืื ืืืืื ืืช ืขืฆืื ืืคืืืคืืจืื ืืื, ืืฉื ื ืืืืคื ืคืขืื ืงืื ืืืื ืจืื ืืืืคื ืืืืืืื ืืืืก ืืืงืฉืืช HTTP ืืืงืืื. ืฉืืจืืชืื ืฉืืื ื ืืฉืืืืฉ ืืฆืืืฆืืื ืืกืืคื ืฉื ืืืจ ืืืคืก, ืืืกืคืงืื ืงื ื ืืืื ืืื ืฉืจืช ืืกืื ืื ืืคื ืืจืืฉื.
Knative ืืืจืืืช ืืงืืืฆื ืฉื ืืงืจืื ืืืชืงืื ืื ืืื ืืฉืืื Kubernetes ืืืกืคืงืื ืืช ืืืืืืืช ืืืืืช:
- ืื ืืืช ืืคืืืงืฆืืืช ืืืืืืช ืืงืื ืืืงืืจ (ืืืกืืคืง ืขื ืืื ืืจืืื ืึดืื ืึนืช),
- ืืชื ืืืฉื ืืชืขืืืจื ื ืื ืกืช ืืืืฉืืืื (ืืืกืืคืงืื ืขื ืืื ืืจืืื ืืืฉื),
- ืืฉืืื ืืฉืื ืื ืงื ื ืืืื ืืืืืืื ืฉื ืืืฉืืืื ืืคื ืืจืืฉื (ื ืืชื ืื ืื ืขื ืืื ืืจืืื ืืืฉื),
- ืืืืื ืืงืืจืืช ืืืืจืืขืื ืืืืืืืื ืืืฉืงืช ืืคืืืงืฆืืืช (ืืืกืืคืงืื ืขื ืืื ืืจืืื ืืืจืืข).
ืืจืืื ืืจืืื ืืื Serving, ืืืกืคืง ืืกืคืงื, ืงื ื ืืืื ืืืืืืื ืื ืืืื ืชืขืืืจื ืขืืืจ ืืืฉืืืื ืื ืืืืื. ืืืืจ ืืชืงื ืช Knative, ืขืืืื ืชืืื ืื ืืืฉื ืืืื ืืืืฉืง ื-API ืฉื Kubernetes, ืืืืคืฉืจ ืืืฉืชืืฉืื ืื ืื ืืืฉืืืื ืืช ืืจืืื ืืจื, ืืืฉืืฉืช ืื ืื ืืคืื ืืืืื ืืฉืืจืืชื Knative, ืชืื ืขืืืื ืขื ืืืชื ืคืจืืืืืืืื ืฉื API ืฉืฉืืจืืชืื ืืื ืืฉืชืืฉืื ืืื (ืืืืืืื, ืฉืืจืืชืื ืืื').
ืืขืืจืช Serving, ืื ื ืืชืื ืชืขืืืจื ืืืื-ืืจืืง ืืืืืืื, ืื ืฉืืืืื ืืคืจืืช ืชื ืืขื ืืื ืืจืกืืืช ืืืฉืืช ืืืฉื ืืช ืฉื ืืืคืืืงืฆืื ืืืฉืจ ืืืฉืชืืฉ ืืกืคืง ืืจืกื ืืขืืืื ืช ืฉื ืืืคืืืงืฆืื.
Knative ืขืฆืื ืชืืืื ืืืชืงื ืช ืืงืจ ืื ืืกื ืชืืื. ืืืื ืืชืืืช ืืืืจ ืื ื ืชืื
Istio Service Mesh ืืืืื ืืืืืช ืชืืืช ืืืืื ืขืืืจ ืืฉืชืืฉื Knative ืฉืจืืฆืื ืื ืกืืช ืืืชื ืืืื ืืืชืงืื ืืช ืืื ืืืงืจื ืฉื Istio, ืืืืืื ืฉ-Knative ืชืืื ืจืง ืืฉืขืจ.
ืืกืืื ืื, ืจืื ืืืฉืชืืฉืื ืืขืืืคืื ืืช Gloo ืืฉืขืจ ื-Knative, ืืืกืคืง ืืขืจื ืืืื ืฉื ืืืืืืช ื-Istio (ืืฆืืจื ืฉืืืืฉ ืจืง ื-Knative), ืชืื ืฉืืืืฉ ืืคืืืช ืืฉืืืื ืืืืคื ืืฉืืขืืชื ืืขืืืืืช ืชืคืขืื ื ืืืืืช ืืืชืจ.
ืืืื ื ืืื ืืช Knative ืืคืขืืื ืขื ืืืืื. ืื ื ืืฉืชืืฉ ืืืฉืืื ืฉืืืชืงื ืืืืจืื ื ืืคืืขื ื-GKE:
kubectl get namespace
NAME STATUS AGE
default Active 21h
kube-public Active 21h
kube-system Active 21h
ืืืื ื ืชืืื ืืืชืงืื ืืช Knative and Gloo. ื ืืชื ืืขืฉืืช ืืืช ืืื ืกืืจ:
# ััะฐะฒะธะผ Knative-Serving
kubectl apply -f
https://github.com/knative/serving/releases/download/v0.8.0/serving-core.yaml
namespace/knative-serving created
# ...
# ััะฐะฒะธะผ Gloo
kubectl apply -f
https://github.com/solo-io/gloo/releases/download/v0.18.22/gloo-knative.yaml
namespace/gloo-system created
# ...
ืื ื ืืืืงืื ืฉืื ืืคืืืื ื ืืฆืืื ืืกืืืืก "ืคืืขื":
kubectl get pod -n knative-serving
NAME READY STATUS RESTARTS AGE
activator-5dd55958cc-fkp7r 1/1 Running 0 7m32s
autoscaler-fd66459b7-7d5s2 1/1 Running 0 7m31s
autoscaler-hpa-85b5667df4-mdjch 1/1 Running 0 7m32s
controller-85c8bb7ffd-nj9cs 1/1 Running 0 7m29s
webhook-5bd79b5c8b-7czrm 1/1 Running 0 7m29s
kubectl get pod -n gloo-system
NAME READY STATUS RESTARTS AGE
discovery-69548c8475-fvh7q 1/1 Running 0 44s
gloo-5b6954d7c7-7rfk9 1/1 Running 0 45s
ingress-6c46cdf6f6-jwj7m 1/1 Running 0 44s
knative-external-proxy-7dd7665869-x9xkg 1/1 Running 0 44s
knative-internal-proxy-7775476875-9xvdg 1/1 Running 0 44s
Gloo ืืืื ืื ืืชืื, ืืืื ื ืืฆืืจ ืฉืืจืืช Knative ืืงื ื ืืืื ืืืืืืื (ืืืื ื ืงืจื ืืื kservice) ืื ืชืื ืืืื ืืช ืืชื ืืขื.
ืฉืืจืืชื Knative ืืกืคืงืื ื ืชืื ืงื ืืืชืจ ืืืกืคืงืช ืืืฉืืืื ื-Kubernetes ืืืฉืจ ืืืื Deployment+Service+Ingress ืืจืืื. ื ืขืืื ืขื ืืืืืื ืืื:
apiVersion: serving.knative.dev/v1alpha1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
spec:
containers:
- image: gcr.io/knative-samples/helloworld-go
env:
- name: TARGET
Value: Knative user
ืืขืชืงืชื ืืช ืื ืืงืืืฅ, ืืื ืืืืชื ืืืชื ืขื ืืฉืืื Kubernetes ืฉืื ืืืจื ืื:
kubectl apply -f ksvc.yaml -n default
ืื ื ืืืืืื ืืจืืืช ืืช ืืืฉืืืื ืฉื ืืฆืจื ืขื ืืื Knative ืืืฉืืื ืืืืจ ืืขืืจืช ื-"helloworld-go" ืฉืื ื kservice:
kubectl get pod -n default
NAME READY STATUS RESTARTS AGE
helloworld-go-fjp75-deployment-678b965ccb-sfpn8 2/2 Running 0 68s
ืืคืื ืขื ืชืืื ืช 'helloworld-go' ืฉืื ื ืืืฉืง ืืืฉืจ ื-kservice ื ืคืจืก. ืื ืืื ืชื ืืขื, ืืกืคืจ ืืคืืืื ืืงืื ืืืคืก. ืืืืืคื, ืื ืืกืคืจ ืืืงืฉืืช ืื-ืืื ืืช ืืืจื ืืกืฃ ืืกืืื ืฉื ืืชื ืืืืืจื, ืืกืคืจ ืืคืืืื ืืืื.
kubectl get ingresses.networking.internal.knative.dev -n default
NAME READY REASON
helloworld-go True
Knative ืืืืืจ ืืช ืืื ืืกื ืฉืื ืืืืฆืขืืช ืืฉืื 'ืื ืืกื' ืืืืื ื-Knative API ืืคื ืืื. Gloo ืืฉืชืืฉ ื-API ืื ืืชืฆืืจื ืฉืื ืืื ืืกืคืง ืชืืื ืืช ืืืืืืช PaaS, ืืืื ืืืื ืคืจืืกื ืืืื-ืืจืืง, ืืืืคื ืืืืืืืืช ืฉื TLS, ืคืกืงื ืืื ืืชืืื ืืช ื ืืชืื ืืชืงืืืืช ืืืจืืช.
ืืืืจ ืืื ืื, ืื ื ืจืืืื ืฉืืชืจืืืืื ืฉืื ื ื ืขืืื (ืืืืืื ืฉืื ืืืืชื ืชื ืืขื ื ืื ืกืช):
kubectl get pod -n default
No resources found.
kubectl get deployment -n default
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
helloworld-go-fjp75-deployment 0 0 0 0 9m46s
ืืืกืืฃ ื ื ืกื ืืืืืข ืืืืื. ืืชื ืืืื ืืงืืืช ืืืงืืืช ืืงืื ืืช ืืชืืืช ืืืชืจ ืขืืืจ Knative Proxy ืืืืฆืขืืช glooctl
:
glooctl proxy url --name knative-external-proxy
http://35.190.151.188:80
ืืื ืืืชืงื glooctl
ืืชื ืืืื ืืจืืืช ืืช ืืืชืืืช ืืืืฆืืื ืืฉืืจืืช kube:
kubectl get svc -n gloo-system knative-external-proxy
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
knative-external-proxy LoadBalancer 10.16.11.157 35.190.151.188 80:32168/TCP,443:30729/TCP 77m
ืืืื ื ืจืืฅ ืืื ื ืชืื ืื ืืืืฆืขืืช cURL:
curl -H "Host: helloworld-go.default.example.com" http://35.190.151.188
Hello Knative user!
Knative ืืกืคืงืช ืืืขื PaaS ืืืคืชืืื ืขื ืืื Kubernetes ืืืืฆืืืช ืืืงืืคืกื ืืืืฆืขืืช ืฉืขืจ ื-API ืืขื ืืืืฆืืขืื ืืืืืืื ืฉื Gloo. ืืคืืกื ืืื ืจืง ืฉืจื ืืช ืคื ื ืืฉืื ืฉื ืืคืฉืจืืืืช ืืืชืืื ืืืืฉืืช ืื ืจืืืืช ืฉื Knative ืืชืืื ืืช ื ืืกืคืืช. ืืืชื ืืืจ ืขื Gloo!
ืืืจืืช ืืขืืืื ืฉ-Knative ืืื ืขืืืื ืคืจืืืงื ืฆืขืืจ, ืืฆืืืช ืฉืื ืืฉืืจืจ ืืจืกืืืช ืืืฉืืช ืื ืฉืืฉื ืฉืืืขืืช, ืืืืื ืืืืขืช ืชืืื ืืช ืืชืงืืืืช, ืืื ืคืจืืกืช TLS ืืืืืืืืช, ืงื ื ืืืื ืืืืืืื ืฉื ืืื ืืืงืจื. ืืฉ ืกืืืื ืืืื ืฉืืชืืฆืื ืืฉืืชืืฃ ืคืขืืื ืืื ืืกืคืจ ืืืจืืช ืขื ื, ืืืืกืืก ืืืฆืขืช Cloud Run ืืืืฉื ืฉื ืืืื, Knative ืืืืื ืืืคืื ืืืืคืฆืื ืืขืืงืจืืช ืขืืืจ ืืืฉืื ืืื ืฉืจืช ื-PaaS ื-Kubernetes. ืขืงืื ืืืจ ืืืืฉืืช!
ืืขืืจืื SouthBridge
ืืขืืช ืืงืืจืืื ืืฉืืืืช ืื ื, ืืื ืื ื ืืืงืฉืื ืืื ืืงืืช ืืืง ืืกืงืจ ืงืฆืจ ืืงืฉืืจ ืืืืืจืื ืขืชืืืืื ืขื Knative, Kubernetes, ืืืฉืื ืืื ืฉืจืชืื:
ืจืง ืืฉืชืืฉืื ืจืฉืืืื ืืืืืื ืืืฉืชืชืฃ ืืกืงืจ.
ืืื ืขืื ืืืืฉืื ืืืชืื ืืืืจืื ืืืืจืืืื ืขื ืืืฉืื Knative ืืืกืจ ืฉืจืชืื?
-
ืื ืืืงืฉื.
-
ืื ืชืืื.
28 ืืฉืชืืฉืื ืืฆืืืขื. 4 ืืฉืชืืฉืื ื ืื ืขื.
ืืงืืจ: www.habr.com