Kubernetes α αααΆααααΆααααΆαααΆαααα·ααΆααα αααααααααΆααααΆαααΆαααααααΆααα»αααΊαααα ααΆαααααααΌααααααααΆααααα»αααΆααααααααααααααΎαααααΆααα’αααααααααΎ APIs αα·αα§ααααααααααΆααααΆαααααα½αααααααααΈα APIs ααααααΆααΆαα½αααΉαααααΆαααααΆαααααα½αα
αααααΆαααΆαααΆααααα α’αααααααΎααααΆαααα ααααααΌαααααΎααΆααααααα α α·ααααααα’α·αα’αααΈααααααΆαααααααΆα ααααααα ααΆαααααααα ααααααααα αα·αααααΎααΆαααααααΆααααααα·ααΈα αααα αΆααααΆαααααΎααΆαααααααΆααααααα·ααΈ ααΆαααΆαααΆα αα·αααα αΌαα ααΆα ααααα αααααα·αααΎααΆααααααα α α·αααααααα’αααααααΎααααΆααα ααΆααααα Kubernetes αααα ααΈαααα·ααΆααααααΆααΆααααΆαααα (PaaS) ααΌα ααΆ Cloud Foundry αα·α Heroku ααΆααΎαα
αααα·ααΆααΆαα ααα»α αααααΆααα’αααααααΎααααΆαααα α αΎαααΆαααααααααααααΆααα’αααα’αα·αααααααααααα·ααΈαααααΆαα αααΎαααΆααααΆααααααααααα»αααΆαααα‘αΎααααααα·ααΈααΈαα½ααα ααΆααααααααααΌα ααΆαααΆααα±ααααααΎααααΆαα αα·αααααααααααΌαααΆαααααααααααααααααααααααΆααΆαα ααααα’αααααααΎααααΆααααααααααααα PaaS ααΌαααααΆαα
ααα αΌαααΆαααΆαααΈααααααα
ααΆααΆααααΌαααΆααααααααααααα PaaS ααααααααΎαααΌαααΆααα»αααΊαααααααΆαααααα½α ααΆαααΆαααααααΆαααΆ αααα
αααααΌαααααΈ αα·αααααα DNS αααααΆααα
ααΆα
αααα
αΌαα ααΆααα’αααααααααΌαααΆαααΎααα
ααΎααΆααααααααΆ git push
.
Kubernetes (αααα
ααααΆ) ααααααααααα»αα’ααΆαααααΌααααααΆαααααα·ααΆαααααα ααααα»αα±αααα ααααααΆαααααΈααΆααααα»αααΆαααααΎααΆαααΆαααααααα½αα―αα αααα
Kubernetes ααΊααΆαααα·ααΆαααααΆαααααααΎααααα·ααΆα ααΈααΆααααα’αααα»ααααααΆααααΆαα αΆααααααΎα ααα»αααααα·ααααα ααα
ααΆαααααα ααΎαααΎααααα»αααααΆααααααΎα Kubernetes ααααΌα ααΆαααα»αα αα»ααααα ααααααααα»αααααΆααΆααααααΎα PaaS αααααΆαα Kubernetes ααΌα ααΆ OpenShift αα·α Rancher ααΆααΎαα α ααααααΈααααΆα Kube-PaaS ααααααα»αααΈαα ααααΎα Knative ααααααααΎαα‘αΎααααα»αααααααααΆ ααααΆα 2018 ααα Google αα·α Pivotal αααα»αααΆαα αΌαααααααα
Knative ααΊααΆαα·α αα αα ααΆααααΆα Google αα·α Pivotal αααααΆααααα½ααα·α αα½α ααΈαααα»αα αα»αααααααααααΌα ααΆ IBM, RedHat αα·α Solo.im α ααΆαααααααΌαααααα» PaaS ααααααααααΆαα ααΉα Kubernetes ααΆαα½αααΉαααΆαααΆααααααααα·αααααααααααΆαααααααα·ααΈαα»αααααΌαααααααα·αααΆααααΆαααΈαααα αα·αααΌα ααΆαααααΆαααΆ Kubernetes αα Knative ααααΌαααΆαααα‘αΎαααΆαααααα·ααΈααααααααΎα ααααα Kubernetes αααααααΌαααααΆ αα·αααααααα ααΆααααααααααΆααααααααΆαα’αααααααΎααααΆααα
ααΎ Knative ααΆα’αααΈ?
Knative ααααΌαααΆααα·αααααΆααΆααΆ "αααα·ααΆαααααΆαααΌαααααΆαααΎ Kubernetes αααααΆααα ααα αΆα αα·ααααααααααααααα»αααΆαααΆααααααααΎαα»αααααΌαααααααΆααααΆαααΈαααααααΎαα" Knative αααααααααα αααα·ααααααααααααααα½αααΆααΌα ααΆαααα·ααΆαα½α ααααΎααΆαααααααΆααααααααααααααααα·αααΆαααααααααα»ααααΆααΆααααα ααΉαααααΎ HTTP ααααΆαααααΆα ααααΆααααααααα·αααΆαααααΎαα ααΈαααα»αααααΎααΆαααααααΆαα α»ααααααΌααα ααααααααααΌαααΆαααααΎααΆαααααααΆαααΆααααααΌαααΆαααΆαααα serverless α
Knative ααΆααααα»αα§ααααααααααΆαααααα‘αΎααα αααα»αα ααααα Kubernetes ααΆαα½α α αΎααααααααΌααααααααΆαααΌα ααΆααααααα
- αααααΎααααααα·ααΈαα»αααΊαααααΈααΌαααααα (αααααααααααΆαααΆα αααΆα),
- αααααααΌαααΆαα αΌαααααΎαααΆααα ααΆααα ααΆα αααα αΌααα ααΆαααααααα·ααΈ (αααααααααααΆαααΆα ααΆααααααΎ),
- ααΆαα ααα αΆα αα·αααΆαααααΎααΆαααααααΆααααααααααααααααα·αααααααα·ααΈααΆααααααΌαααΆα (αααααααααααΆαααΆααααααα ααΆααααααΎ),
- αααααα’ααααααααΆααααααααααααΉαααα·ααΆααααααααΆααα αααααΆαααΎαααααΎαααΆααααααα·ααΈ (αααααααααααΆαααΆα ααααΉαααα·ααΆααα).
αααΆαααΆαα»ααααΆαααα½αααΊααΆααααααΎ ααααααααααΌαααΆαααααα ααΆαααααΎααΆαααααααΆααααααααααααααααα· αα·αααΆααααααααααα ααΆα ααααααααΆαααααααα·ααΈαααααΆααααααααααα αααααΆααααΈααα‘αΎα Knative α’ααααα ααααΆααα·αααα·α αΌαααααΎαααΆααααααααα ααΆαα Kubernetes API αααα’αα»ααααΆαα±ααα’αααααααΎααααΆααααααααααααααααα·ααΈ ααααααΆ αα·ααΈ α αΎαβααβαααααΎβααΎααααΈβααααΆααβααα α»αβααααΆααααβαααααΎαβαααβααΆαβααααΎβααΆαβααΆαα½αβααΉα API primitives ααΌα ααααΆβαααβααααΆααααβααΆαααααβααααΎ (αααΌαα»α ααααΆααααβααα)α
αααααΆααααα½αααΈααΆααααααΎ ααΆααααααααααΌαα ααΆα αααααααααααααααααααααααααααα·ααααα αααααΆααΆα±ααααΆαααΆααααααα ααΆα ααααααΆαααααααααΈ αα·αααααα αΆαααααααααα·ααΈ αα ααααααα’αααααααΎααααΆαααααααααααα’αΆααααααααααααα·ααΈα
Knative αααα½αααΆα’αΆαααααααΎααΆαααα‘αΎαα§ααααααααααΆ ingress αααααααΌαααααΆα αα
ααααααααα’ααααααααααααΌαααΆαααΆαααα
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 αα·α 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
# ...
ααΎααα·αα·αααααΎαααΆ Pods ααΆααα’αααααα·ααα αααα»αααααΆαααΆα "αααα»αααααΎαααΆα"α
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 ααααααα ααΆαααααααα ingress ααααααΆαααααααΎααααΆα 'ingress' αα·ααααα αααα»α 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
ααΈαααα»αααΎαααΉαααααΆααΆααα
ααααα½αααα α’αααα’αΆα
ααα½αααΆα URL αααααΆαα 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 αααα αααα’αααααααααΎ Gloo ααααΎαααΆαααααα α ααα API αααααααααα ααΆααααα αααααααααΆααααααΌαααΎαααααααααααΎαααααΌαααΆαααααααααΌααααΌααΆααααα Knative αα·ααα»αααΆαααααααααα»αααααα ααΌα ααααΆααΆαα½α Gloo!
αααααΈααΆααΆααα·ααααααΆ Knative αα ααααΆααααααααααααααααααα αααααα»αααααααΆα ααααααααααΈαααααΆααααααΆααα½ααααααΆα ααααα α αΎαααΆαα’αα»αααααα»αααΆαααααα·ααααααααΆαα αΆααααααΎα ααΌα ααΆααΆαααΆαααααααΆα TLS αααααααααααααααα· ααΆαααααΎααΆαααααααΆααααααααααααααααα·ααααααΆαααααααΆα ααΆαα±ααΆαααααα’ααα ααΆαααααααααα·α αα αα ααΆααααΆααααα»αα αα»ααααααΆα αααΎα αα·αααΆααΌαααααΆαααααΆααααααααΌα Cloud Run ααααΈαααα Google Knative α’αΆα ααααΆαααΆαααααΎαα αααααααααΆαααα»αααααΌαααααααΆααααΆαααΈααα αα·α PaaS αα ααΎ Kubernetes α ααΆαααΆαααααααΆα!
ααΈα’αααααααααα½α SouthBridge
ααα·ααααα’αααα’αΆαααΆαααΆααααααΆααα
ααααααΎα ααΌα
ααααααΎαααααΎα±ααα’αααα
αΌααα½ααααα»αααΆααααααααα·ααααΈαα½αααΆααααααΉαα’αααααααΆαααα’ααΆααα’αααΈ Knative, Kubernetes, αα»αααααΌαααααααΆααααΆαααΈαααα
ααΆαααα’αααααααΎααααΆαααααααΆαα
α»ααααααααα»ααααααααα’αΆα
α
αΌααα½ααααα»αααΆααααααααα·αααα
ααΎαααα»ααα½ααααααααααα’ααααα αα·αααΆαααααΆαα’αααΈααΆαααααΆααααα·αα ααααΈααααα½α αα·ααααΆαααΈααα?
-
ααΆα ααΌαα
-
α’ααα’αΈβααβα’ααα»αβα αΎαα
α’αααααααΎααααΆαα 28 ααΆααααΆαααααααααα α’αααααααΎααααΆαα α¦α£ ααΆααααααΌαααΆαα αΆαααΆααα
ααααα: www.habr.com