将在线拍卖 scala 部署到 GCP 不起作用
Deployment of online-auction-scala to GCP not working
我正尝试在 GCP 上获取 online-auction-scala
运行。我现在唯一想念的是让 ingress
工作。来自 search
服务的健康检查报告 UNHEALTHY
状态,尽管 search
服务已启动且 运行 并且其日志中没有错误。
构建 docker 图像并将它们发布到 docker 注册表后我执行的步骤:
gcloud container clusters create mt-develop
gcloud container clusters get-credentials mt-develop
kubectl create serviceaccount tiller --namespace kube-system
kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
helm init --service-account tiller
helm install lightbend-helm-charts/reactive-sandbox --name reactive-sandbox
PRIMARY_ACCOUNT=$(gcloud info --format='value(config.account)')
kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin --user=$PRIMARY_ACCOUNT
kubectl apply -f RBAC.yml
当 reactive-sandbox
准备就绪时,我是 运行 来自 KUBERNATES.md
文件的脚本。
#
# NOTE: You must change the secret values below or the applications will crash.
#
# These values are used for Play's application secret. It is important that they are set to a secret value.
# More information: https://www.playframework.com/documentation/latest/ApplicationSecret
secret_bidding=Secret123
secret_item=Secret123
secret_user=Secret123
secret_search=Secret123
secret_web=Secret123
# Configure Play's Allowed Hosts filter.
# More information: https://www.playframework.com/documentation/latest/AllowedHostsFilter
allowed_host=.
# Default addresses for reactive-sandbox, which provides Cassandra, Kafka, Elasticsearch
export service_cassandra=_cql._tcp.reactive-sandbox-cassandra.default.svc.cluster.local
export service_kafka=_broker._tcp.reactive-sandbox-kafka.default.svc.cluster.local
export service_elasticsearch=_http._tcp.reactive-sandbox-elasticsearch.default.svc.cluster.local
# Deploy bidding-impl
rp generate-kubernetes-resources registry.mydomain.com/trg/biddingimpl:1.0.0-SNAPSHOT \
--generate-pod-controllers --generate-services --service-type="NodePort" \
--env JAVA_OPTS="-Dplay.http.secret.key=$secret_bidding -Dplay.filters.hosts.allowed.0=$allowed_host" \
--pod-controller-replicas 2 \
--external-service "cas_native=$service_cassandra" \
--external-service "kafka_native=$service_kafka" | kubectl apply -f -
# Deploy item-impl
rp generate-kubernetes-resources registry.mydomain.com/trg/itemimpl:1.0.0-SNAPSHOT \
--generate-pod-controllers --generate-services --service-type="NodePort" \
--env JAVA_OPTS="-Dplay.http.secret.key=$secret_item -Dplay.filters.hosts.allowed.0=$allowed_host" \
--pod-controller-replicas 2 \
--external-service "cas_native=$service_cassandra" \
--external-service "kafka_native=$service_kafka" | kubectl apply -f -
# Deploy user-impl
rp generate-kubernetes-resources registry.mydomain.com/trg/userimpl:1.0.0-SNAPSHOT \
--generate-pod-controllers --generate-services --service-type="NodePort" \
--env JAVA_OPTS="-Dplay.http.secret.key=$secret_user -Dplay.filters.hosts.allowed.0=$allowed_host" \
--pod-controller-replicas 2 \
--external-service "cas_native=$service_cassandra" \
--external-service "kafka_native=$service_kafka" | kubectl apply -f -
# Deploy search-impl
rp generate-kubernetes-resources registry.mydomain.com/trg/searchimpl:1.0.0-SNAPSHOT \
--generate-pod-controllers --generate-services --service-type="NodePort" \
--env JAVA_OPTS="-Dplay.http.secret.key=$secret_search -Dplay.filters.hosts.allowed.0=$allowed_host" \
--pod-controller-replicas 2 \
--external-service "cas_native=$service_cassandra" \
--external-service "kafka_native=$service_kafka" \
--external-service "elastic-search=$service_elasticsearch" | kubectl apply -f -
# Deploy webgateway
rp generate-kubernetes-resources registry.mydomain.com/trg/webgateway:1.0.0-SNAPSHOT \
--service-type="NodePort" \
--generate-pod-controllers --generate-services \
--env JAVA_OPTS="-Dplay.http.secret.key=$secret_web -Dplay.filters.hosts.allowed.0=$allowed_host" | kubectl apply -f -
# Deploy ingress for everything
# Note that some environments, such as IBM Cloud and Google Kubernetes Engine have slightly different nginx
# implementations. For these, you may need to specify `--ingress-path-suffix '*'` or `--ingress-path-suffix '.*'` as
# part of the command below.
rp generate-kubernetes-resources \
--generate-ingress --ingress-name online-auction \
registry.mydomain.com/trg/webgateway:1.0.0-SNAPSHOT \
registry.mydomain.com/trg/searchimpl:1.0.0-SNAPSHOT \
registry.mydomain.com/trg/userimpl:1.0.0-SNAPSHOT \
registry.mydomain.com/trg/itemimpl:1.0.0-SNAPSHOT \
registry.mydomain.com/trg/biddingimpl:1.0.0-SNAPSHOT | kubectl apply -f -
如有任何帮助,我们将不胜感激。
谢谢帕特里克,我弄明白了为什么 ingress 显示出不健康的状态。这是因为它试图从 / 路径获取它,并且在该服务中,它是 returning 404 状态代码。我必须在该路径上将其实施到 return 200,这解决了问题。
我正尝试在 GCP 上获取 online-auction-scala
运行。我现在唯一想念的是让 ingress
工作。来自 search
服务的健康检查报告 UNHEALTHY
状态,尽管 search
服务已启动且 运行 并且其日志中没有错误。
构建 docker 图像并将它们发布到 docker 注册表后我执行的步骤:
gcloud container clusters create mt-develop
gcloud container clusters get-credentials mt-develop
kubectl create serviceaccount tiller --namespace kube-system
kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
helm init --service-account tiller
helm install lightbend-helm-charts/reactive-sandbox --name reactive-sandbox
PRIMARY_ACCOUNT=$(gcloud info --format='value(config.account)')
kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin --user=$PRIMARY_ACCOUNT
kubectl apply -f RBAC.yml
当 reactive-sandbox
准备就绪时,我是 运行 来自 KUBERNATES.md
文件的脚本。
#
# NOTE: You must change the secret values below or the applications will crash.
#
# These values are used for Play's application secret. It is important that they are set to a secret value.
# More information: https://www.playframework.com/documentation/latest/ApplicationSecret
secret_bidding=Secret123
secret_item=Secret123
secret_user=Secret123
secret_search=Secret123
secret_web=Secret123
# Configure Play's Allowed Hosts filter.
# More information: https://www.playframework.com/documentation/latest/AllowedHostsFilter
allowed_host=.
# Default addresses for reactive-sandbox, which provides Cassandra, Kafka, Elasticsearch
export service_cassandra=_cql._tcp.reactive-sandbox-cassandra.default.svc.cluster.local
export service_kafka=_broker._tcp.reactive-sandbox-kafka.default.svc.cluster.local
export service_elasticsearch=_http._tcp.reactive-sandbox-elasticsearch.default.svc.cluster.local
# Deploy bidding-impl
rp generate-kubernetes-resources registry.mydomain.com/trg/biddingimpl:1.0.0-SNAPSHOT \
--generate-pod-controllers --generate-services --service-type="NodePort" \
--env JAVA_OPTS="-Dplay.http.secret.key=$secret_bidding -Dplay.filters.hosts.allowed.0=$allowed_host" \
--pod-controller-replicas 2 \
--external-service "cas_native=$service_cassandra" \
--external-service "kafka_native=$service_kafka" | kubectl apply -f -
# Deploy item-impl
rp generate-kubernetes-resources registry.mydomain.com/trg/itemimpl:1.0.0-SNAPSHOT \
--generate-pod-controllers --generate-services --service-type="NodePort" \
--env JAVA_OPTS="-Dplay.http.secret.key=$secret_item -Dplay.filters.hosts.allowed.0=$allowed_host" \
--pod-controller-replicas 2 \
--external-service "cas_native=$service_cassandra" \
--external-service "kafka_native=$service_kafka" | kubectl apply -f -
# Deploy user-impl
rp generate-kubernetes-resources registry.mydomain.com/trg/userimpl:1.0.0-SNAPSHOT \
--generate-pod-controllers --generate-services --service-type="NodePort" \
--env JAVA_OPTS="-Dplay.http.secret.key=$secret_user -Dplay.filters.hosts.allowed.0=$allowed_host" \
--pod-controller-replicas 2 \
--external-service "cas_native=$service_cassandra" \
--external-service "kafka_native=$service_kafka" | kubectl apply -f -
# Deploy search-impl
rp generate-kubernetes-resources registry.mydomain.com/trg/searchimpl:1.0.0-SNAPSHOT \
--generate-pod-controllers --generate-services --service-type="NodePort" \
--env JAVA_OPTS="-Dplay.http.secret.key=$secret_search -Dplay.filters.hosts.allowed.0=$allowed_host" \
--pod-controller-replicas 2 \
--external-service "cas_native=$service_cassandra" \
--external-service "kafka_native=$service_kafka" \
--external-service "elastic-search=$service_elasticsearch" | kubectl apply -f -
# Deploy webgateway
rp generate-kubernetes-resources registry.mydomain.com/trg/webgateway:1.0.0-SNAPSHOT \
--service-type="NodePort" \
--generate-pod-controllers --generate-services \
--env JAVA_OPTS="-Dplay.http.secret.key=$secret_web -Dplay.filters.hosts.allowed.0=$allowed_host" | kubectl apply -f -
# Deploy ingress for everything
# Note that some environments, such as IBM Cloud and Google Kubernetes Engine have slightly different nginx
# implementations. For these, you may need to specify `--ingress-path-suffix '*'` or `--ingress-path-suffix '.*'` as
# part of the command below.
rp generate-kubernetes-resources \
--generate-ingress --ingress-name online-auction \
registry.mydomain.com/trg/webgateway:1.0.0-SNAPSHOT \
registry.mydomain.com/trg/searchimpl:1.0.0-SNAPSHOT \
registry.mydomain.com/trg/userimpl:1.0.0-SNAPSHOT \
registry.mydomain.com/trg/itemimpl:1.0.0-SNAPSHOT \
registry.mydomain.com/trg/biddingimpl:1.0.0-SNAPSHOT | kubectl apply -f -
如有任何帮助,我们将不胜感激。
谢谢帕特里克,我弄明白了为什么 ingress 显示出不健康的状态。这是因为它试图从 / 路径获取它,并且在该服务中,它是 returning 404 状态代码。我必须在该路径上将其实施到 return 200,这解决了问题。