Ubuntu 24.02 系统下的 jenkins配置MicroK8s 教程
这里是使用的ubuntu24.02系统版本,为什么会选择使用microk8s,因为这可能是最简单k8s,而且足够轻量化。
推荐至少3台机器,master node1 node2
使用下面的命令进行安装
sudo snap install microk8s --classic
如果后续使用过程中出现数据库损坏且无法修复则使用
sudo snap remove microk8s
彻底重装后再解决问题。
然后在master运行
microk8s add-node
选择带有 --work的命令在node中执行就行,每台都要装microk8s。可以根据个人需要选择不同的node加入方式。
接下来就是找到这个文件,先运行microk8s stop
vi /var/snap/microk8s/8511/args/kube-apiserver
然后下方authorization改为RBAC,Node,默认是allowalways.
--cert-dir=${SNAP_DATA}/certs
--service-cluster-ip-range=10.152.183.0/24
--authorization-mode=RBAC,Node
--service-account-key-file=${SNAP_DATA}/certs/serviceaccount.key
--client-ca-file=${SNAP_DATA}/certs/ca.crt
--tls-cert-file=${SNAP_DATA}/certs/server.crt
--tls-private-key-file=${SNAP_DATA}/certs/server.key
--tls-cipher-suites=TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384
--kubelet-client-certificate=${SNAP_DATA}/certs/apiserver-kubelet-client.crt
--kubelet-client-key=${SNAP_DATA}/certs/apiserver-kubelet-client.key
--secure-port=16443
--etcd-servers="unix://${SNAP_DATA}/var/kubernetes/backend/kine.sock:12379"
--allow-privileged=true
--service-account-issuer='https://kubernetes.default.svc'
--service-account-signing-key-file=${SNAP_DATA}/certs/serviceaccount.key
--event-ttl=5m
--profiling=false
# Enable the aggregation layer
--requestheader-client-ca-file=${SNAP_DATA}/certs/front-proxy-ca.crt
--requestheader-allowed-names=front-proxy-client
--requestheader-extra-headers-prefix=X-Remote-Extra-
--requestheader-group-headers=X-Remote-Group
--requestheader-username-headers=X-Remote-User
--proxy-client-cert-file=${SNAP_DATA}/certs/front-proxy-client.crt
--proxy-client-key-file=${SNAP_DATA}/certs/front-proxy-client.key
#~Enable the aggregation layer
--enable-admission-plugins=EventRateLimit
--admission-control-config-file=${SNAP_DATA}/args/admission-control-config-file.yaml
--kubelet-certificate-authority=${SNAP_DATA}/certs/ca.crt
--kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP
# Disable the watchlist feature until k8s-dqlite can handle it
--feature-gates=WatchList=false
microk8s start
然后在 Kubernetes 中为 Jenkins 创建服务账户和权限
无论 Jenkins 是部署在集群内部还是外部,最佳实践都是为它创建一个专用的 ServiceAccount,并通过 RBAC 授予其必要的权限。
microk8s kubectl create namespace jenkins
microk8s kubectl create serviceaccount jenkins-admin -n jenkins
为了让 Jenkins 能够在集群中创建和管理资源(如 Pod、Deployment 等),需要将一个具有足够权限的 ClusterRole 绑定到这个 ServiceAccount 上。
我们可以直接使用 Kubernetes 内置的 cluster-admin 角色(这是一个超级管理员角色,拥有所有权限),这对于快速设置或测试环境很方便。这里
microk8s kubectl create clusterrolebinding jenkins-admin-binding \
--clusterrole=cluster-admin \
--serviceaccount=jenkins:jenkins-admin
这里需要注意的是
在 Kubernetes 1.24 版本之前,当你创建一个 ServiceAccount 时,Kubernetes 会自动创建一个类型为 kubernetes.io/service-account-token 的 Secret,并将其与该 ServiceAccount 关联起来。
从 Kubernetes 1.24 版本开始,这个行为被改变了。为了增强安全性,Kubernetes 不再自动为新创建的 ServiceAccount 生成 Secret。你需要手动为其创建一个 Secret,或者在 Pod 中通过 serviceAccountToken 卷来挂载令牌。
我们需要手动为 jenkins-admin ServiceAccount 创建一个 Secret。
创建一个 YAML 文件,例如 jenkins-admin-secret.yaml,内容如下:
apiVersion: v1
kind: Secret
metadata:
name: jenkins-admin-secret
namespace: jenkins
annotations:
kubernetes.io/service-account.name: "jenkins-admin" # 关键:将此 Secret 与 jenkins-admin ServiceAccount 关联
type: kubernetes.io/service-account-token
然后执行
microk8s kubectl apply -f jenkins-admin-secret.yaml
接下来提取令牌
microk8s kubectl get secret jenkins-admin-secret -n jenkins -o jsonpath='{.data.token}' | base64 -d
输出如下图

到这里microk8s基本配置完成,接下来是配置jenkins,在clouds中添加服务

这里需要注意的是microk8s端口用的是16443,需要忽略证书错误

凭据类型选择secret text,将刚才的内容填进去

其次要注意jekins的通道50000端口要放行


出现成功连接的提示就成功了。
更多推荐

所有评论(0)