Quick Start, Minikube Jenkins

Jenkins Kaniko

  1. minikube

minikube

> minikube start

πŸ˜„  Microsoft Windows 11 Pro 10.0.26100.2605 Build 26100.2605 의 minikube v1.34.0
πŸŽ‰  minikube 1.35.0 이 μ‚¬μš©κ°€λŠ₯ν•©λ‹ˆλ‹€! λ‹€μŒ κ²½λ‘œμ—μ„œ λ‹€μš΄λ°›μœΌμ„Έμš”: https://github.com/kubernetes/minikube/releases/tag/v1.35.0
πŸ’‘  ν•΄λ‹Ή μ•Œλ¦Όμ„ λΉ„ν™œμ„±ν™”ν•˜λ €λ©΄ λ‹€μŒ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜μ„Έμš”. 'minikube config set WantUpdateNotification false'
✨  μœ μ € ν™˜κ²½ μ„€μ • 정보에 κΈ°λ°˜ν•˜μ—¬ docker λ“œλΌμ΄λ²„λ₯Ό μ‚¬μš©ν•˜λŠ” 쀑
πŸ“Œ  Using Docker Desktop driver with root privileges
πŸ‘  Starting "minikube" primary control-plane node in "minikube" cluster
🚜  Pulling base image v0.0.45 ...
πŸ”₯  Creating docker container (CPUs=2, Memory=4000MB) ...
❗  Failing to connect to https://registry.k8s.io/ from inside the minikube container
πŸ’‘  To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/
🐳  μΏ λ²„λ„€ν‹°μŠ€ v1.31.0 을 Docker 27.2.0 λŸ°νƒ€μž„μœΌλ‘œ μ„€μΉ˜ν•˜λŠ” 쀑
    β–ͺ μΈμ¦μ„œ 및 ν‚€λ₯Ό μƒμ„±ν•˜λŠ” 쀑 ...
    β–ͺ 컨트둀 ν”Œλ ˆμΈμ„ λΆ€νŒ…ν•˜λŠ” 쀑 ...
    β–ͺ RBAC κ·œμΉ™μ„ κ΅¬μ„±ν•˜λŠ” 쀑 ...
πŸ”—  bridge CNI (Container Networking Interface) λ₯Ό κ΅¬μ„±ν•˜λŠ” 쀑 ...
πŸ”Ž  Kubernetes ꡬ성 μš”μ†Œλ₯Ό 확인...
    β–ͺ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟  μ• λ“œμ˜¨ ν™œμ„±ν™” : storage-provisioner, default-storageclass
πŸ„  λλ‚¬μŠ΅λ‹ˆλ‹€! kubectl이 "minikube" ν΄λŸ¬μŠ€ν„°μ™€ "default" λ„€μž„μŠ€νŽ˜μ΄μŠ€λ₯Ό 기본적으둜 μ‚¬μš©ν•˜λ„λ‘ κ΅¬μ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
minikube service argocd-server -n argocd
argocd admin initial-password -n argocd
  1. Create Namespace argocd
  2. Installation argocd to Kubernetes
  3. Launch a ArgoCD Applications and Services
  4. Find out argocd password
  5. Access a ArgoCD portal with id: admin, password
> kubectl create namespace argocd
namespace/argocd created

> kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io created
customresourcedefinition.apiextensions.k8s.io/applicationsets.argoproj.io created
customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io created
serviceaccount/argocd-application-controller created
serviceaccount/argocd-applicationset-controller created
serviceaccount/argocd-dex-server created
serviceaccount/argocd-notifications-controller created
serviceaccount/argocd-redis created
serviceaccount/argocd-repo-server created
serviceaccount/argocd-server created
role.rbac.authorization.k8s.io/argocd-application-controller created
role.rbac.authorization.k8s.io/argocd-applicationset-controller created
role.rbac.authorization.k8s.io/argocd-dex-server created
role.rbac.authorization.k8s.io/argocd-notifications-controller created
role.rbac.authorization.k8s.io/argocd-redis created
role.rbac.authorization.k8s.io/argocd-server created
clusterrole.rbac.authorization.k8s.io/argocd-application-controller created
clusterrole.rbac.authorization.k8s.io/argocd-applicationset-controller created
clusterrole.rbac.authorization.k8s.io/argocd-server created
rolebinding.rbac.authorization.k8s.io/argocd-application-controller created
rolebinding.rbac.authorization.k8s.io/argocd-applicationset-controller created
rolebinding.rbac.authorization.k8s.io/argocd-dex-server created
rolebinding.rbac.authorization.k8s.io/argocd-notifications-controller created
rolebinding.rbac.authorization.k8s.io/argocd-redis created
rolebinding.rbac.authorization.k8s.io/argocd-server created
clusterrolebinding.rbac.authorization.k8s.io/argocd-application-controller created
clusterrolebinding.rbac.authorization.k8s.io/argocd-applicationset-controller created
clusterrolebinding.rbac.authorization.k8s.io/argocd-server created
configmap/argocd-cm created
configmap/argocd-cmd-params-cm created
configmap/argocd-gpg-keys-cm created
configmap/argocd-notifications-cm created
configmap/argocd-rbac-cm created
configmap/argocd-ssh-known-hosts-cm created
configmap/argocd-tls-certs-cm created
secret/argocd-notifications-secret created
secret/argocd-secret created
service/argocd-applicationset-controller created
service/argocd-dex-server created
service/argocd-metrics created
service/argocd-notifications-controller-metrics created
service/argocd-redis created
service/argocd-repo-server created
service/argocd-server created
service/argocd-server-metrics created
deployment.apps/argocd-applicationset-controller created
deployment.apps/argocd-dex-server created
deployment.apps/argocd-notifications-controller created
deployment.apps/argocd-redis created
deployment.apps/argocd-repo-server created
deployment.apps/argocd-server created
statefulset.apps/argocd-application-controller created
networkpolicy.networking.k8s.io/argocd-application-controller-network-policy created
networkpolicy.networking.k8s.io/argocd-applicationset-controller-network-policy created
networkpolicy.networking.k8s.io/argocd-dex-server-network-policy created
networkpolicy.networking.k8s.io/argocd-notifications-controller-network-policy created
networkpolicy.networking.k8s.io/argocd-redis-network-policy created
networkpolicy.networking.k8s.io/argocd-repo-server-network-policy created
networkpolicy.networking.k8s.io/argocd-server-network-policy created

> minikube service argocd-server -n argocd
|-----------|---------------|-------------|--------------|
| NAMESPACE |     NAME      | TARGET PORT |     URL      |
|-----------|---------------|-------------|--------------|
| argocd    | argocd-server |             | No node port |
|-----------|---------------|-------------|--------------|
😿  service argocd/argocd-server has no node port
❗  Services [argocd/argocd-server] have type "ClusterIP" not meant to be exposed, however for local development minikube allows you to access this !
πŸƒ  argocd-server μ„œλΉ„μŠ€μ˜ 터널을 μ‹œμž‘ν•˜λŠ” 쀑
|-----------|---------------|-------------|-----------------------|
| NAMESPACE |     NAME      | TARGET PORT |          URL          |
|-----------|---------------|-------------|-----------------------|
| argocd    | argocd-server |             | http://127.0.0.1:3562 |
|           |               |             | http://127.0.0.1:3563 |
|-----------|---------------|-------------|-----------------------|
[argocd argocd-server  http://127.0.0.1:3562
http://127.0.0.1:3563]
❗  windows μ—μ„œ Docker λ“œλΌμ΄λ²„λ₯Ό μ‚¬μš©ν•˜κ³  있기 λ•Œλ¬Έμ—, 터미널을 μ—΄μ–΄μ•Ό μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€

> argocd admin initial-password -n argocd

RqLz4K3bf9nKy10x

 This password must be only used for first time login. We strongly recommend you update the password using `argocd account update-password`.
  1. Login to ArgoCD
  2. Applications > + New APP
  3. Fill-in

    • (GENERAL) Application Name: jenkins
    • (GENERAL) Project Name: default
    • (SOURCE) Repository URL: https://github.com/pushdown99/argo-jenkins.git
    • (SOURCE) Path: app
    • (DESTINATION) Cluster URL: https://kubernetes.default.svc
    • (DESTINATION) Namespace: default
  4. Create
  5. SYNC
  6. kubectl commands
> minikube service jenkins-service -n jenkins

|-----------|-----------------|-------------|---------------------------|
| NAMESPACE |      NAME       | TARGET PORT |            URL            |
|-----------|-----------------|-------------|---------------------------|
| jenkins   | jenkins-service |        8080 | http://192.168.49.2:32000 |
|-----------|-----------------|-------------|---------------------------|
πŸƒ  jenkins-service μ„œλΉ„μŠ€μ˜ 터널을 μ‹œμž‘ν•˜λŠ” 쀑
|-----------|-----------------|-------------|-----------------------|
| NAMESPACE |      NAME       | TARGET PORT |          URL          |
|-----------|-----------------|-------------|-----------------------|
| jenkins   | jenkins-service |             | http://127.0.0.1:5032 |
|-----------|-----------------|-------------|-----------------------|
πŸŽ‰  Opening service jenkins/jenkins-service in default browser...
❗  windows μ—μ„œ Docker λ“œλΌμ΄λ²„λ₯Ό μ‚¬μš©ν•˜κ³  있기 λ•Œλ¬Έμ—, 터미널을 μ—΄μ–΄μ•Ό μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€
> kubectl get pod -n jenkins | grep jenkins | cut -d' ' -f1

jenkins-7c6f896bf4-452pm

> kubectl -n jenkins exec -it jenkins-7c6f896bf4-452pm -- /bin/bash -c "cat /var/jenkins_home/secrets/initialAdminPassword"

c96863d320e84299b1a51cff74ee5781
> kubectl -n jenkins exec -it jenkins-7c6f896bf4-452pm -- /bin/bash
jenkins@jenkins-7c6f896bf4-452pm:/$ cd /var/jenkins_home
jenkins@jenkins-7c6f896bf4-452pm:~$ mkdir .ssh
jenkins@jenkins-7c6f896bf4-452pm:~$ cd .ssh
jenkins@jenkins-7c6f896bf4-452pm:~/.ssh$ cd /var/jenkins_home
jenkins@jenkins-7c6f896bf4-452pm:~/.ssh$ ssh-keygen -t rsa -b 4096 -C test-key -f github_jenkins
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in github_jenkins
Your public key has been saved in github_jenkins.pub
The key fingerprint is:
SHA256:4Itu7DuptuRBct53PEf9d9LsH2mWd0VlJKEzThZOrzg test-key
The key's randomart image is:
+---[RSA 4096]----+
|            o oo+|
|           o + o.|
|      .     B . .|
|     . .   * + . |
|. o   . S E +   .|
| = . . o . . . o+|
|  +.o.o + .   o*B|
| o.o=. . o    o+=|
| .+=+o          +|
+----[SHA256]-----+
jenkins@jenkins-7c6f896bf4-452pm:~/.ssh$
jenkins@jenkins-7c6f896bf4-452pm:~/.ssh$ ls
github_jenkins  github_jenkins.pub
  1. Register SSH key (public key) to Github Repositories

  2. Register SSH key (private key) to Jenkins Credentials

    • Goto Jenkins dashboard (ex: http://127.0.0.1:5022)
    • Dashboard > + New Item => New Item / Name: github_jenkins Type: Freestyle project
    • Dashboard > Name: github_jenkins => Source code management => Git/Repository URL: git@github.com:pushdown99/jenkins-test.git, Credentials/ Add: github_jenkins => Kind: SSH Username with private key, Username: github_jenkins, Private key/Enterdirectly: (cat github_jenkins) => [Add]
  3. Build Trigger

    • Build Trigger / [v] Github hook trigger for GITScm polling
  4. Plugin Installation

    • Jenkins Management > Plugins > Available plugins > GitHub Integration Plugin : Install
  5. Ngrok Installation (optional: localhost)


Β© 2018. All rights reserved.

Powered by Hydejack v8.4.0