Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add WF to remove-user-cluster #43

Merged
merged 9 commits into from
Mar 8, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ jobs:
- name: Install Argo CLI
run: |
# Download the binary
curl -sLO https://github.com/argoproj/argo-workflows/releases/download/v3.1.9/argo-linux-amd64.gz
curl -sLO https://github.com/argoproj/argo-workflows/releases/download/v3.2.6/argo-linux-amd64.gz
Jaesang marked this conversation as resolved.
Show resolved Hide resolved

# Unzip
gunzip argo-linux-amd64.gz
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
name: tks-create-cluster-site
name: tks-create-cluster-repo
namespace: argo
spec:
entrypoint: main
Expand All @@ -14,10 +14,10 @@ spec:
- name: template_name
value: "template-std"
templates:
- name: createClusterSite
- name: createClusterRepo
activeDeadlineSeconds: 120
container:
name: 'createClusterSite'
name: 'createClusterRepo'
image: ghcr.io/sktelecom/ghcli-alpine:2.0.0
imagePullPolicy: IfNotPresent
command:
Expand Down Expand Up @@ -108,8 +108,8 @@ spec:

- name: main
steps:
- - name: createClusterSite
template: createClusterSite
- - name: createClusterRepo
template: createClusterRepo
arguments: {}
- - name: createRepoCredential
template: createRepoCredential
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
name: tks-delete-cluster-site
name: tks-delete-cluster-repo
namespace: argo
spec:
entrypoint: deleteClusterSite
entrypoint: deleteClusterRepo
arguments:
parameters:
- name: cluster_id
value: "cluster_uuid"
templates:
- name: deleteClusterSite
- name: deleteClusterRepo
activeDeadlineSeconds: 120
container:
name: 'deleteClusterSite'
Expand Down
20 changes: 14 additions & 6 deletions tks-cluster/create-usercluster-wftpl.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,19 +25,17 @@ spec:
- name: revision
value: "main"
- name: app_prefix
value: "{{=sprig.substr(0, 8, workflow.parameters.site_name)}}"
value: "{{=sprig.substr(0, 8, workflow.parameters.cluster_id)}}"
- name: tks_info_host
value: "tks-info.tks.svc"

volumes:
- name: config
secret:
secretName: tks-admin-kubeconfig-secret
namespace: argo
- name: artifacts
configMap:
name: aws-artifacts
namespace: argo
defaultMode: 0555
- name: tks-proto-vol
configMap:
Expand All @@ -46,9 +44,9 @@ spec:
templates:
- name: deploy
steps:
- - name: tks-create-cluster-site
- - name: tks-create-cluster-repo
templateRef:
name: tks-create-cluster-site
name: tks-create-cluster-repo
template: main

- - name: k8s-by-capi
Expand All @@ -71,7 +69,7 @@ spec:
- - name: wait-for-clster-to-be-registered
template: wait-for-cluster-registration

- - name: install-cni-and-csi
- - name: install-addons
templateRef:
name: create-application
template: installApps
Expand All @@ -91,6 +89,12 @@ spec:
"path": "aws-ebs-csi-driver",
"namespace": "kube-system",
"target_cluster": ""
},
{
"app_group": "tks-cluster-aws",
"path": "ingress-nginx",
"namespace": "taco-system",
"target_cluster": ""
}
]

Expand All @@ -103,6 +107,10 @@ spec:
- name: cluster_status
value: RUNNING

#######################
# Template Definition #
#######################

- name: wait-for-cluster-registration
activeDeadlineSeconds: 1800
container:
Expand Down
206 changes: 206 additions & 0 deletions tks-cluster/remove-usercluster-wftpl.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,206 @@
apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
name: tks-remove-usercluster
namespace: argo
spec:
entrypoint: main
arguments:
parameters:
- name: app_group
value: "tks-cluster-aws"
- name: tks_info_host
value: "tks-info.tks.svc"
- name: cluster_id
value: "abbead61-ff2a-4af4-8f41-d2c44c745de7"
- name: app_prefix
value: "{{=sprig.substr(0, 8, workflow.parameters.cluster_id)}}"
- name: filter
value: "app={{=sprig.substr(0, 8, workflow.parameters.cluster_id)}}-{{workflow.parameters.app_group}}"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

요거 변경이 필요하다고 하지 않으셨나요?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이미 substr 들어가있는데요?

volumes:
- name: tks-proto-vol
configMap:
name: tks-proto
templates:
- name: main
steps:
- - name: deleteIngressControllerApp
templateRef:
name: delete-apps
template: DeleteAppsByName
arguments:
parameters:
- name: app_name
value: "{{workflow.parameters.app_prefix}}-ingress-nginx"

- - name: cleanupPVCs
template: cleanupPVCs

- - name: deleteCsiDriverApp
templateRef:
name: delete-apps
template: DeleteAppsByName
arguments:
parameters:
- name: app_name
value: "{{workflow.parameters.app_prefix}}-aws-ebs-csi-driver"

- - name: deleteCalicoController
template: deleteCalicoController
arguments:
parameters:
- name: target_namespace
value: "kube-system"

- - name: deleteAddonsApp
templateRef:
name: delete-apps
template: DeleteAppsByName
arguments:
parameters:
- name: app_name
value: "{{workflow.parameters.app_prefix}}-kubernetes-addons"

- - name: disableAutoSyncOfClusterApp
template: disableAutoSync

- - name: deleteClusterCR
template: deleteClusterCR
arguments:
parameters:
- name: target_namespace
value: "{{workflow.parameters.cluster_id}}"

- - name: deleteArgoCDAppGroup
templateRef:
name: delete-apps
template: DeleteAppsByLabel

# Update status to 'DELETED' in tks-info DB
- - name: updateClusterStatusToTksInfo
templateRef:
name: update-tks-cluster-status
template: updateClusterStatus
arguments:
parameters:
- name: cluster_status
value: "DELETED"

- - name: deleteClusterRepo
templateRef:
name: tks-delete-cluster-repo
template: deleteClusterRepo


#######################
# Template Definition #
#######################
- name: disableAutoSync
container:
name: disable-auto-sync
image: docker.io/sktcloud/argocd-cli:v2.2.5
command:
- /bin/bash
- '-c'
- |
APP_NAME="cluster-api-aws"
if [[ -n "{{workflow.parameters.app_prefix}}" ]]; then
APP_NAME="{{workflow.parameters.app_prefix}}-cluster-api-aws"
fi

# Login to Argo CD server
./argocd login $ARGO_SERVER --plaintext --insecure --username $ARGO_USERNAME \
--password $ARGO_PASSWORD

# Disable auto-sync
echo "Disabling auto-sync of [$APP_NAME]' app.."
./argocd app set $APP_NAME --sync-policy none
envFrom:
- secretRef:
name: "decapod-argocd-config"

- name: cleanupPVCs
container:
name: cleanup-pvcs
image: 'k8s.gcr.io/hyperkube:v1.18.6'
command:
- /bin/bash
- '-c'
- |
kube_secret=$(kubectl get secret -n {{workflow.parameters.cluster_id}} {{workflow.parameters.cluster_id}}-kubeconfig -o jsonpath="{.data.value}" | base64 -d)
echo -e "kube_secret:\n$kube_secret" | head -n 5
cat <<< "$kube_secret" > /etc/kubeconfig

kube_params+="--kubeconfig=/etc/kubeconfig"

echo "List of PVCs that will be deleted: "
kubectl $kube_params get ns | grep -v "NAME\|kube-system" | awk '{ print $1 }' | xargs -I '{}' kubectl get pvc -n '{}'
echo "======================================"

kubectl $kube_params get ns | grep -v "NAME\|kube-system" | awk '{ print $1 }' | xargs -I '{}' kubectl delete pvc --all -n '{}'

if [[ $? =~ 0 ]]; then
echo "All PVCs have been deleted successfully."
else
echo "Error occurred while cleaning up PVCs."
exit 1
fi

- name: deleteCalicoController
inputs:
parameters:
- name: target_namespace
container:
name: delete-calico
image: 'k8s.gcr.io/hyperkube:v1.18.6'
command:
- /bin/bash
- '-c'
- |
kube_secret=$(kubectl get secret -n {{workflow.parameters.cluster_id}} {{workflow.parameters.cluster_id}}-kubeconfig -o jsonpath="{.data.value}" | base64 -d)
echo -e "kube_secret:\n$kube_secret" | head -n 5
cat <<< "$kube_secret" > /etc/kubeconfig

kube_params+="--kubeconfig=/etc/kubeconfig"

kubectl $kube_params get deployment -n ${TARGET_NAMESPACE} | grep calico-kube-controller
if [[ $? =~ 0 ]]; then
kubectl $kube_params delete deployment calico-kube-controllers -n ${TARGET_NAMESPACE}

else
echo "Error: deployment 'calico-kube-controllers' was NOT found."
exit 1
fi
env:
- name: TARGET_NAMESPACE
value: "{{inputs.parameters.target_namespace}}"

- name: deleteClusterCR
inputs:
parameters:
- name: target_namespace
container:
name: delete-cluster-cr
image: 'k8s.gcr.io/hyperkube:v1.18.6'
command:
- /bin/bash
- '-c'
- |
kubectl get cl ${CLUSTER_NAME} -n ${TARGET_NAMESPACE}
if [[ $? =~ 0 ]]; then
kubectl delete cl ${CLUSTER_NAME} -n ${TARGET_NAMESPACE}

while (kubectl get cl ${CLUSTER_NAME} -n ${TARGET_NAMESPACE}); do
echo "Waiting for cluster CR to be deleted.."
sleep 2
done
echo "Cluster ${CLUSTER_NAME} was successfully deleted."
else
echo "Error: cluster ${CLUSTER_NAME} was NOT found."
exit 1
fi
env:
- name: TARGET_NAMESPACE
value: "{{inputs.parameters.target_namespace}}"
- name: CLUSTER_NAME
value: "{{workflow.parameters.cluster_id}}"