まず、K8Sクラスタのインストールジェンキンスで
- NFSサービスをインストールし、独自のネットワーク機器を選択し、私は(192.168.80.180)MASTER1ノードを選択しました
(1)MASTER1でNFSサービスをインストールします
yumをインストールNFS-utilsの-y
NFSを開始systemctl
(2)MASTER1上のNFS共有ディレクトリを作成します
ます。mkdir /データ/ V1 -p
猫の/ etc /輸出
/データ/ V1 192.168.80.0/24(rw,no_root_squash)
exportfsを有効にするには、設定ファイルを-arv
systemctl再起動NFS
- kubernetesはジェンキンスを展開しました
(1)名前空間を作成
名前空間のジェンキンス-K8Sを作成kubectl
(2)PVを作成します
猫pv.yaml
apiVersion:V1
種類:PersistentVolume
メタデータ:
名前:ジェンキンス-K8S-PV
スペック:
容量:
storage: 10Gi
accessModes:
-
ReadWriteMany
NFS:
サーバー:192.168.80.180
パス:/データ/ V1
kubectl -f pv.yamlを適用
(3)PVCを作成
猫pvc.yaml
種類:PersistentVolumeClaim
apiVersion:V1
メタデータ:
名前:ジェンキンス-K8S-PVC
名前空間:ジェンキンス-K8S
スペック:
リソース:
requests:
storage: 10Gi
accessModes:
- ReadWriteMany
ビューのPVとPVC結合状態
-n-ジェンキンスkubectl K8S PVCは、GET
(4)アカウントのSAを作成します
SAのジェンキンス-K8S-SA -nジェンキンス-K8Sを作成kubectl
(5)saアカウントは、RBACを行うことを許可しました
ジェンキンス-K8S-SA:-K8Sジェンキンス--clusterrole =クラスタ管理者--serviceaccount =ジェンキンス-K8Sジェンキンス-K8S-SA-クラスタ-nをclusterrolebinding作成kubectl
(6)展開ジェンキンスによって展開
猫ジェンキンス-deployment.yaml
種類:展開
apiVersion:アプリケーション/ V1
メタデータ:
名前:ジェンキンス
名前空間:ジェンキンス-K8S
スペック:
レプリカ:1
セレクタ:
matchLabels:
app: jenkins
テンプレート:
metadata:
labels:
app: jenkins
spec:
serviceAccount: jenkins-k8s-sa
containers:
- name: jenkins
image: jenkins/jenkins:lts
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
name: web
protocol: TCP
- containerPort: 50000
name: agent
protocol: TCP
resources:
limits:
cpu: 1000m
memory: 1Gi
requests:
cpu: 500m
memory: 512Mi
livenessProbe:
httpGet:
path: /login
port: 8080
initialDelaySeconds: 60
timeoutSeconds: 5
failureThreshold: 12
readinessProbe:
httpGet:
path: /login
port: 8080
initialDelaySeconds: 60
timeoutSeconds: 5
failureThreshold: 12
volumeMounts:
- name: jenkins-volume
subPath: jenkins-home
mountPath: /var/jenkins_home
volumes:
- name: jenkins-volume
persistentVolumeClaim:
claimName: jenkins-k8s-pvc
chownコマンド-R 1000 /データ/ V1
-fジェンキンス-deployment.yamlを適用kubectl
-n-ジェンキンスGET PODS kubectl K8S
(7)と共にフロントエンドジェンキンスサービスと、外部ネットワークへのアクセスを提供
猫ジェンキンス-service.yamlの
apiVersion:V1
種類:サービス
メタデータ:
名前:ジェンキンスサービス
名前空間:ジェンキンス-K8S
ラベル:
app: jenkins
スペック:
セレクタ:
app: jenkins
タイプ:NodePort
ポート:
-
名前:ウェブ
ポート:8080
targetPort:ウェブ
nodePort:30002
-
名前:エージェント
ポート:50000
targetPort:エージェントは
-fジェンキンス-service.yamlを適用kubectl
kubectl GET SVC -nジェンキンス-K8S
第二に、ジェンキンスを設定
ジェンキンスは、ブラウザでのWebインタフェースにアクセスします。
http://192.168.80.199:30002/login?from=%2F
- 管理者パスワードを取得します。
在nfs服务端,也就是master1节点获取密码:
cat /data/v1/jenkins-home/secrets/initialAdminPassword
把上面获取到的密码拷贝到上面管理员密码下的方框里
点击继续,出现如下界面
- 安装插件
安装插件
插件安装好之后显示如下:
- 创建管理员用户
用户名和密码都设置成admin,线上环境需要设置成复杂的密码
修改好之后点击保存并完成,出现如下界面
点击保存并完成,出现如下界面
点击保存并完成,出现如下界面
三、测试jenkins的CI/CD
- 在Jenkins中安装kubernetes插件
(1)在jenkins中安装k8s插件
Manage Jnekins------>Manage Plugins------>可选插件------>搜索kubernetes------>出现如下
选中kubernetes之后------>点击下面的直接安装------>安装之后选择重新启动jenkins--->重启之后登陆jenkins即可
- 配置jenkins连接到我们存在的k8s集群
(1)点击系统管理->系统设置-新增一个云,在下拉菜单中选择kubernets并添加
(2)填写云kubernetes配置内容
(3)测试jenkins和k8s是否可以通信
点击连接测试,如果显示Connection test successful,说明测试成功,Jenkins可以和k8s进行通信
应用------>保存
- 配置pod-template
(1)配置pod template
システム管理------> [システム設定------>ポッドテンプレートを追加します。------> Kubernetesポッドテンプレート--->構成は次のように
(2)上記容器はポッドテンプレートを追加
次のように補給容器------>コンテナテンプレート------> ------>配置
ポッドテンプレート高度がある右下隅で、[詳細設定]をクリックし、次のように表示されます
サービスアカウントでジェンキンス-K8S-SAを入力するとき、SA、これは我々がインストールジェンキンスを開始saのものです
(3)ポッドテンプレートに上記のボリュームを追加します。
ボリュームを追加------> [ホストの選択パスのボリューム
あなたは上記のように構成したら、アプリケーション------>保存
- 独自のdockerhub資格情報を追加します。
ホーム------>クレデンシャルは------>店舗は----->の下に示し、ジェンキンス下ジェンキンスにスコープをクリックして
次のように表示され、このグローバル資格情報]をクリックします------>
xianchao:ユーザ名
パスワード:1989 *****
ID:dockerhub
説明:
よりよいのために上記の変更にOKを選択した後
第三に、ジェンキンスによって展開K8Sをテスト
ホームに戻ります:
入力時にタスク------>タスクジェンキンス-可変テスト・デプロイの名前を入力します。------> ------パイプライン> OK ------>パイプラインのスクリプトを作成します。以下
ノード( 'testhan'){
stage('Test') {
echo "Test Stage"
}
}
アプリケーション------>保存------>直ちに構築する
BlueOcean、次のインターフェイスを開きます
私はそれぞれを奨励したいと思います