123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- local bgGuestbook = std.extVar("__ksonnet/components")["bg-guestbook"];
- local bgGuestbookSvc = bgGuestbook[0];
- local bgGuestbookDeploy = bgGuestbook[1];
- [
- {
- "apiVersion": "v1",
- "kind": "Pod",
- "metadata": {
- "generateName": "blue-green-",
- "annotations": {
- "argocd.argoproj.io/hook": "Sync",
- "deploy-manifest": std.manifestJson(bgGuestbookDeploy),
- "svc-manifest": std.manifestJson(bgGuestbookSvc),
- },
- },
- "spec": {
- "serviceAccountName": "blue-green-sa",
- "restartPolicy": "Never",
- "containers": [
- {
- "name": "blue-green",
- "image": "argoproj/argoexec:latest",
- "command": ["bash", "-c"],
- "args": ["
- curl -L -o /usr/local/bin/kubectl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl &&
- chmod +x /usr/local/bin/kubectl &&
- curl -sSL -o /usr/local/bin/blue-green.sh https://raw.githubusercontent.com/argoproj/argocd-example-apps/master/blue-green-deploy/blue-green.sh &&
- chmod +x /usr/local/bin/blue-green.sh &&
- blue-green.sh
- "],
- "env": [
- {
- "name": "DEPLOY_MANIFEST",
- "valueFrom": {
- "fieldRef": {
- "fieldPath": "metadata.annotations['deploy-manifest']"
- }
- }
- },
- {
- "name": "SERVICE_MANIFEST",
- "valueFrom": {
- "fieldRef": {
- "fieldPath": "metadata.annotations['svc-manifest']"
- }
- }
- },
- // NOTE: app.kubernetes.io/instance will get injected into the hook object
- {
- "name": "APPNAME",
- "valueFrom": {
- "fieldRef": {
- "fieldPath": "metadata.labels['app.kubernetes.io/instance']"
- }
- }
- }
- ]
- }
- ],
- }
- },
- // RBAC to allow the blue-green pod privileges to manipulate deployments and services
- {
- "apiVersion": "v1",
- "kind": "ServiceAccount",
- "metadata": {
- "name": "blue-green-sa"
- }
- },
- {
- "apiVersion": "rbac.authorization.k8s.io/v1",
- "kind": "Role",
- "metadata": {
- "name": "blue-green-role"
- },
- "rules": [
- {
- "apiGroups": [
- "apps",
- "extensions"
- ],
- "resources": [
- "deployments",
- ],
- "verbs": [
- "list",
- "get",
- "create",
- "update",
- "patch",
- "delete",
- ]
- },
- {
- "apiGroups": [
- ""
- ],
- "resources": [
- "services"
- ],
- "verbs": [
- "list",
- "get",
- "create",
- "update",
- "patch",
- "delete",
- ]
- }
- ]
- },
- {
- "apiVersion": "rbac.authorization.k8s.io/v1",
- "kind": "RoleBinding",
- "metadata": {
- "name": "blue-green-rolebinding"
- },
- "roleRef": {
- "apiGroup": "rbac.authorization.k8s.io",
- "kind": "Role",
- "name": "blue-green-role"
- },
- "subjects": [
- {
- "kind": "ServiceAccount",
- "name": "blue-green-sa"
- }
- ]
- }
- ]
|