jacklin
使用AWS eks kubernetes1.21 部署的kubesphere3.2.x 出现devops kubeconfig认证失败
首见这个应该是kubesphere 官方还没有完善的点,也不是完全BUG;只能说明问题点确实官方也明白,但是社区也没有明确解释清楚,造成很误解,大家可以参考如下操作:
1.参见#https://kubesphere.com.cn/docs/faq/devops/create-devops-kubeconfig-on-aws/创建kubeconfig,注意namespace 要进行更换为自己的
2.参见#https://kubesphere.com.cn/forum/d/6500-kubeconfigfile-name-too-long/12提到的:请注意不是 kubeconfigContent,而是 kubeconfigFile。
剩下部署步骤Jenkinsfile例如:
pipeline {
agent {
node {
label ‘base’
}
}
stages {
stage(‘check out’) {
agent none
steps {
container(‘base’) {
git(url: ‘$CODE_GIT_URL’, credentialsId: ‘code-registry-user-passwd’, branch: ‘master’, changelog: true, poll: false)
sh ‘pwd’
}
}
}
stage(‘build push’) {
agent none
steps {
container(‘base’) {
sh '''docker build -t $REGISTRY_URI/$REGISTRY_NS/$REGISTRY_PROJECT:$DOCKER_IMG_TAG . –network=host
docker images’''
withCredentials([usernamePassword(credentialsId : ‘dockerhub-ali’ ,passwordVariable : ‘DOCKER_PASSWORD’ ,usernameVariable : ‘DOCKER_USERNAME’ ,)]) {
sh ‘echo “$DOCKER_PASSWORD” | docker login $REGISTRY_URI -u “$DOCKER_USERNAME” –password-stdin’
sh '''docker push $REGISTRY_URI/$REGISTRY_NS/$REGISTRY_PROJECT:$DOCKER_IMG_TAG
'''
}
}
}
}
stage(‘deploy to pro’) {
agent none
steps {
input(message: ‘deploy to pro ?’, submitter: '')
}
}
stage(‘deploy app’) {
agent none
steps {
container(‘base’) {
withCredentials([kubeconfigFile(credentialsId : ‘demo-kubeconfig’ ,variable : ‘KUBECONFIG’ ,)]) {
sh ‘envsubst < deploy/pro-ol/deployment.yaml | kubectl apply -f -’
}
}
}
}
}
environment {
KUBECONFIG_CREDENTIAL_ID = ‘demo-kubeconfig’
}
}
3.再提供demo-kubeconfig内容:
在kubesphere后面,相应项目下服务帐户找到刚创建:devops-deploy 的kubeconfig 设置
apiVersion: v1
kind: Config
clusters:
- name: devops-deploy@local
cluster:
server: ‘https://kubernetes.default.svc:443’
certificate-authority-data: >-
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxBase64==
users:
- name: devops-deploy
user:
token: >-
YYYYYYYYYYYYYYYYYYYYYYYBase64==
contexts:
- name: devops-deploy@local
context:
user: devops-deploy
cluster: devops-deploy@local
namespace: sample-namespace
current-context: devops-deploy@local