diff --git a/Commands.md b/Commands.md new file mode 100644 index 0000000..083f07d --- /dev/null +++ b/Commands.md @@ -0,0 +1,48 @@ +kubectl create ns guestbook +kc create ns helm-guestbook +kc create ns prod-kustomize-guestbook +kc create ns dev-kustomize-guestbook + + +argocd app create guestbook \ +--repo https://github.com/radtac-craft/argocd-example-apps.git \ +--path guestbook \ +--dest-server https://kubernetes.default.svc \ +--dest-namespace guestbook + +argocd app sync guestbook +argocd app wait guestbook --sync + + +argocd app create helm-guestbook \ +--repo https://github.com/radtac-craft/argocd-example-apps.git \ +--path helm-guestbook \ +--dest-server https://kubernetes.default.svc \ +--dest-namespace helm-guestbook + +argocd app sync helm-guestbook +argocd app wait helm-guestbook --sync + +KUSTOMIZE - + +PROD: +argocd app create prod-kustomize-guestbook \ +--repo https://github.com/radtac-craft/argocd-example-apps.git \ +--path kustomize-guestbook/overlays/prod \ +--dest-server https://kubernetes.default.svc \ +--dest-namespace prod-kustomize-guestbook \ +--revision HEAD + +argocd app sync prod-kustomize-guestbook +argocd app wait prod-kustomize-guestbook --sync + +DEV: +argocd app create dev-kustomize-guestbook \ +--repo https://github.com/radtac-craft/argocd-example-apps.git \ +--path kustomize-guestbook/overlays/dev \ +--dest-server https://kubernetes.default.svc \ +--dest-namespace dev-kustomize-guestbook \ +--revision dev + +argocd app sync dev-kustomize-guestbook +argocd app wait dev-kustomize-guestbook --sync \ No newline at end of file diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..3bb2ebf --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,42 @@ +node { + timestamps{ + properties([buildDiscarder(logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '3', numToKeepStr: '7'))]) + + stage('Start argocd') { + withKubeConfig(credentialsId: 'aws-eksctl-kubeconfig', serverUrl: '') { + withCredentials([usernamePassword(credentialsId: 'argocd-devops-lab', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) { +// sh""" + sh 'kubectl port-forward svc/argocd-server -n argocd 8080:443&' + sh 'argocd logout 127.0.0.1:8080' +// sh 'echo $PASSWORD' +// sh""" +// echo $PASSWORD +// """ + sh 'argocd login 127.0.0.1:8080 --insecure --username $USERNAME --password $PASSWORD' + sh 'argocd app list' +// """ + } + } + } + + stage('Create app') { + withKubeConfig(credentialsId: 'aws-eksctl-kubeconfig', serverUrl: '') { + sh """ + argocd app create ${env.BRANCH_NAME}-kustomize-guestbook \ + --repo https://github.com/radtac-craft/argocd-example-apps.git \ + --path kustomize-guestbook/overlays/${env.BRANCH_NAME} \ + --dest-server https://kubernetes.default.svc \ + --dest-namespace ${env.BRANCH_NAME}-kustomize-guestbook + """ + sh 'argocd app sync $BRANCH_NAME-kustomize-guestbook' + sh 'argocd app wait $BRANCH_NAME-kustomize-guestbook --sync' + } + } + + stage('Verify app') { + withKubeConfig(credentialsId: 'aws-eksctl-kubeconfig', serverUrl: '') { + sh 'argocd app list' + } + } +} +} \ No newline at end of file diff --git a/guestbook/ingress.yaml b/guestbook/ingress.yaml new file mode 100644 index 0000000..fa1a453 --- /dev/null +++ b/guestbook/ingress.yaml @@ -0,0 +1,20 @@ +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + name: guestbook-ingress + namespace: guestbook + labels: + app.kubernetes.io/component: server + app.kubernetes.io/name: guestbook-server + app.kubernetes.io/part-of: guestbook + annotations: + kubernetes.io/ingress.class: traefik +spec: + rules: + - host: guestbook-argocd.natwest-labs.com + http: + paths: + - backend: + serviceName: guestbook-ui + servicePort: 80 + path: / \ No newline at end of file diff --git a/kustomize-guestbook/base/argo-app.yaml b/kustomize-guestbook/base/argo-app.yaml new file mode 100644 index 0000000..03c2886 --- /dev/null +++ b/kustomize-guestbook/base/argo-app.yaml @@ -0,0 +1,16 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: guestbook + namespace: argocd + # finalizers: + # - resources-finalizer.argocd.argoproj.io +spec: + destination: + namespace: kustomize-guestbook + server: https://kubernetes.default.svc + project: default + source: + path: kustomize-guestbook + repoURL: https://github.com/radtac-craft/argocd-example-apps.git + targetRevision: HEAD \ No newline at end of file diff --git a/kustomize-guestbook/guestbook-ui-deployment.yaml b/kustomize-guestbook/base/guestbook-ui-deployment.yaml similarity index 100% rename from kustomize-guestbook/guestbook-ui-deployment.yaml rename to kustomize-guestbook/base/guestbook-ui-deployment.yaml diff --git a/kustomize-guestbook/guestbook-ui-svc.yaml b/kustomize-guestbook/base/guestbook-ui-svc.yaml similarity index 100% rename from kustomize-guestbook/guestbook-ui-svc.yaml rename to kustomize-guestbook/base/guestbook-ui-svc.yaml diff --git a/kustomize-guestbook/base/ingress.yaml b/kustomize-guestbook/base/ingress.yaml new file mode 100644 index 0000000..75dd755 --- /dev/null +++ b/kustomize-guestbook/base/ingress.yaml @@ -0,0 +1,20 @@ +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + name: guestbook-ingress + # namespace: guestbook + labels: + app.kubernetes.io/component: server + app.kubernetes.io/name: guestbook-server + app.kubernetes.io/part-of: guestbook + annotations: + kubernetes.io/ingress.class: traefik +spec: + rules: + - host: kustomize-guestbook-argocd.natwest-labs.com + http: + paths: + - backend: + serviceName: guestbook-ui + servicePort: 80 + path: / \ No newline at end of file diff --git a/kustomize-guestbook/kustomization.yaml b/kustomize-guestbook/base/kustomization.yaml similarity index 83% rename from kustomize-guestbook/kustomization.yaml rename to kustomize-guestbook/base/kustomization.yaml index cbaba90..1b53f90 100644 --- a/kustomize-guestbook/kustomization.yaml +++ b/kustomize-guestbook/base/kustomization.yaml @@ -1,7 +1,10 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + namePrefix: kustomize- resources: - guestbook-ui-deployment.yaml - guestbook-ui-svc.yaml -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization +- ingress.yaml +- argo-app.yaml \ No newline at end of file diff --git a/kustomize-guestbook/overlays/dev/argo-app.yaml b/kustomize-guestbook/overlays/dev/argo-app.yaml new file mode 100644 index 0000000..b91ef2a --- /dev/null +++ b/kustomize-guestbook/overlays/dev/argo-app.yaml @@ -0,0 +1,16 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: guestbook + namespace: argocd + # finalizers: + # - resources-finalizer.argocd.argoproj.io +spec: + destination: + namespace: dev-kustomize-guestbook + server: https://kubernetes.default.svc + project: default + source: + path: kustomize-guestbook/overlays/dev + repoURL: https://github.com/radtac-craft/argocd-example-apps.git + targetRevision: dev \ No newline at end of file diff --git a/kustomize-guestbook/overlays/dev/ingress.yaml b/kustomize-guestbook/overlays/dev/ingress.yaml new file mode 100644 index 0000000..cf3e0af --- /dev/null +++ b/kustomize-guestbook/overlays/dev/ingress.yaml @@ -0,0 +1,14 @@ +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + name: guestbook-ingress + namespace: +spec: + rules: + - host: dev-kustomize-guestbook-argocd-check-deploy.natwest-labs.com + http: + paths: + - backend: + serviceName: guestbook-ui + servicePort: 80 + path: / diff --git a/kustomize-guestbook/overlays/dev/kustomization.yaml b/kustomize-guestbook/overlays/dev/kustomization.yaml new file mode 100644 index 0000000..0fc5da9 --- /dev/null +++ b/kustomize-guestbook/overlays/dev/kustomization.yaml @@ -0,0 +1,6 @@ +bases: +- ../../base +namePrefix: dev- +patchesStrategicMerge: +- ingress.yaml +- argo-app.yaml \ No newline at end of file diff --git a/kustomize-guestbook/overlays/prod/argo-app.yaml b/kustomize-guestbook/overlays/prod/argo-app.yaml new file mode 100644 index 0000000..b2e9228 --- /dev/null +++ b/kustomize-guestbook/overlays/prod/argo-app.yaml @@ -0,0 +1,16 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: guestbook + namespace: argocd + # finalizers: + # - resources-finalizer.argocd.argoproj.io +spec: + destination: + namespace: prod-kustomize-guestbook + server: https://kubernetes.default.svc + project: default + source: + path: kustomize-guestbook/overlays/prod + repoURL: https://github.com/radtac-craft/argocd-example-apps.git + targetRevision: HEAD \ No newline at end of file diff --git a/kustomize-guestbook/overlays/prod/ingress.yaml b/kustomize-guestbook/overlays/prod/ingress.yaml new file mode 100644 index 0000000..6e2e86b --- /dev/null +++ b/kustomize-guestbook/overlays/prod/ingress.yaml @@ -0,0 +1,14 @@ +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + name: guestbook-ingress + namespace: +spec: + rules: + - host: kustomize-guestbook-argocd.natwest-labs.com + http: + paths: + - backend: + serviceName: guestbook-ui + servicePort: 80 + path: / diff --git a/kustomize-guestbook/overlays/prod/kustomization.yaml b/kustomize-guestbook/overlays/prod/kustomization.yaml new file mode 100644 index 0000000..268be52 --- /dev/null +++ b/kustomize-guestbook/overlays/prod/kustomization.yaml @@ -0,0 +1,6 @@ +bases: +- ../../base +namePrefix: prod- +patchesStrategicMerge: +- ingress.yaml +- argo-app.yaml \ No newline at end of file