Docker 部署到gcloud时出现CircleCI kubectl配置错误

Docker 部署到gcloud时出现CircleCI kubectl配置错误,docker,kubernetes,gcloud,kubectl,circleci,Docker,Kubernetes,Gcloud,Kubectl,Circleci,我对docker/kubernetes/dev ops基本上是新手,我学习的课程使用了Travis和Github,但是我使用了BitBucket,所以我正试图用CircleCI实现对GKE的CI部署 大多数任务都运行得很好,但是当涉及到kubectl(特别是deploy.sh脚本)时,我遇到了一个错误。下面是我得到的错误: unable to recognize "k8s/client-deployment.yml": Get http://localhost:8080/api?timeout=

我对docker/kubernetes/dev ops基本上是新手,我学习的课程使用了
Travis
Github
,但是我使用了
BitBucket
,所以我正试图用
CircleCI
实现对GKE的CI部署

大多数任务都运行得很好,但是当涉及到
kubectl
(特别是
deploy.sh
脚本)时,我遇到了一个错误。下面是我得到的错误:

unable to recognize "k8s/client-deployment.yml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused
unable to recognize "k8s/database-persistent-volume-claim.yml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused
unable to recognize "k8s/ingress-service.yml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused
unable to recognize "k8s/postgres-cluster-ip-service.yml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused
unable to recognize "k8s/postgres-deployment.yml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused
unable to recognize "k8s/redis-cluster-ip-service.yml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused
unable to recognize "k8s/redis-deployment.yml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused
unable to recognize "k8s/server-cluster-ip-service.yml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused
unable to recognize "k8s/server-deployment.yml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused
unable to recognize "k8s/worker-deployment.yml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused
我已经设法解决了这个问题,但是我在这个问题上迷失了方向,所以任何帮助都是非常感谢的

这是CircleCI的
config.yml
(在
MyUser
上,我实际上使用的是我的docker用户,不是env或其他任何东西,只是不想透露它):

下面是部署.sh的
deploy.sh

docker build -t MY_USER/multi-docker-client:latest -t MY_USER/multi-docker-client:$GIT_SHA -f ./client/Dockerfile ./client
docker build -t MY_USER/multi-docker-server:latest -t MY_USER/multi-docker-server:$GIT_SHA -f ./server/Dockerfile ./server
docker build -t MY_USER/multi-docker-worker:latest -t MY_USER/multi-docker-worker:$GIT_SHA -f ./worker/Dockerfile ./worker
docker push MY_USER/multi-docker-client:latest
docker push MY_USER/multi-docker-server:latest
docker push MY_USER/multi-docker-worker:latest
docker push MY_USER/multi-docker-client:$GIT_SHA
docker push MY_USER/multi-docker-server:$GIT_SHA
docker push MY_USER/multi-docker-worker:$GIT_SHA
kubectl apply -f k8s
kubectl set image deployments/client-deployment client=MY_USER/multi-docker-client:$GIT_SHA
kubectl set image deployments/server-deployment server=MY_USER/multi-docker-server:$GIT_SHA
kubectl set image deployments/worker-deployment worker=MY_USER/multi-docker-worker:$GIT_SHA
这是我的项目结构:


因此,我只遗漏了下一个命令:

gcloud——安静的容器集群获取凭据多集群

作为此任务的一部分:

    # !!! This installs gcloud !!!
    - run:
        name: Installing GCL
        working_directory: /
        command: |
          echo $GCLOUD_SERVICE_KEY | gcloud auth activate-service-account --key-file=-
          gcloud --quiet config set project ${GOOGLE_PROJECT_ID}
          gcloud --quiet config set compute/zone ${GOOGLE_COMPUTE_ZONE}
          gcloud --quiet container clusters get-credentials multi-cluster

向@DazWilkin大声喊叫,让他发光

http://localhost:8080/api错误表示您的客户端无法访问Kubernetes群集('s API服务器)。我怀疑这些错误是由于
kubectl apply-f k8s
命令导致的,该命令将迭代
k8s
目录中的文件,并将它们应用于Kubernetes集群。我建议您将配置与示例进行比较。在某个时候,教程将针对集群进行验证(创建一个
~/.kube/config
)文件,该文件将由
kubectl
命令.Yo假设,因此我非常确定课程中没有包含此内容,但我记得在我的研究中看到类似的内容。查了一下,那就是丢失的那块。你是救命恩人!很高兴看到你让它工作了!
    # !!! This installs gcloud !!!
    - run:
        name: Installing GCL
        working_directory: /
        command: |
          echo $GCLOUD_SERVICE_KEY | gcloud auth activate-service-account --key-file=-
          gcloud --quiet config set project ${GOOGLE_PROJECT_ID}
          gcloud --quiet config set compute/zone ${GOOGLE_COMPUTE_ZONE}
          gcloud --quiet container clusters get-credentials multi-cluster