我创建了一个kubernetes集群并将其与eks链接。
我还创建了一个舵图和.gitla-ci.yml。 我想添加一个新步骤,以使用Helm将我的应用程序部署到群集中,但是我没有找到最新的教程。所有教程都使用gitlab-auto devops。
图片托管在gitlab上。
我该怎么做才能完成这项任务?
image: docker:latest
services:
- docker:dind
variables:
DOCKER_DRIVER: overlay
SPRING_PROFILES_ACTIVE: test
USER_GITLAB: kosted
APP_NAME: mebooks
REPO: gara-mebooks
MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
stages:
- deploy
k8s-deploy:
stage: deploy
image: dtzar/helm-kubectl:3.1.2
only:
- develop
script:
# Read certificate stored in $KUBE_CA_PEM variable and save it in a new file
- echo $KUBE_URL
- kubectl config set-cluster gara-eks-cluster --server="$KUBE_URL" --certificate-authority="$KUBE_CA_PEM"
- kubectl get pods
在gitlab控制台中,我得到了
与服务器localhost:8080的连接被拒绝-您是否已 指定正确的主机或端口?运行after_script 00:01上传 作业失败的工件00:02错误:作业失败:退出代码1
答案 0 :(得分:1)
这里我添加了我的方法,它是通用的,可以在没有 AWS CLI 的任何 K8S 环境中使用。
首先,您需要将您的 Kube Config 转换为 base64 字符串:
cat ~/.kube/config | base64
将结果字符串作为变量添加到项目/组的 CI/CD 管道设置中。在我的示例中,我使用了 kube_config
。 Read more on how to add variables here.
这是我的 CI YAML 文件:
stages:
# - build
# - test
- deploy
variables:
KUBEFOLDER: /root/.kube
KUBECONFIG: $KUBEFOLDER/config
k8s-deploy-job:
stage: deploy
image: dtzar/helm-kubectl:3.5.0
before_script:
- mkdir ${KUBEFOLDER}
- echo ${kube_config} | base64 -d > ${KUBECONFIG}
- helm version
- helm repo update
script:
- echo "Deploying application..."
- kubectl get pods
#- helm upgrade --install my-chart ./my-chart-folder
- echo "Application successfully deployed."
答案 1 :(得分:0)
1-从AWS控制台在IAM上创建arn角色或用户 2-连接到堡垒,并在ConfigMap aws-auth中添加arn角色/用户 您可以按照以下说明了解其工作原理(您不是群集段落的创建者):https://aws.amazon.com/fr/premiumsupport/knowledge-center/eks-api-server-unauthorized-error/ 3-如果您是创建的用户,则只需在gitlab ci中添加它:
k8s-deploy:
stage: deploy
image: you need an image with aws + kubectl + helm
only:
- develop
script:
- aws --version
- aws --profile default configure set aws_access_key_id "your access id"
- aws --profile default configure set aws_secret_access_key "your secret"
- helm version
- aws eks update-kubeconfig --name NAME-OF-YOUR-CLUSTER --region eu-west-3
- helm upgrade init
- helm upgrade --install my-chart ./my-chart-folder
如果您创建了一个用户角色说明,则只需执行以下操作:
k8s-deploy:
stage: deploy
image: you need an image with aws + kubectl + helm
only:
- develop
script:
- aws --version
- helm version
- aws eks update-kubeconfig --name NAME-OF-YOUR-CLUSTER --region eu-west-3 -arn
- helm upgrade init
- helm upgrade --install my-chart ./my-chart-folder