@@ -22,74 +22,76 @@ set -o pipefail
2222REPO_ROOT=" $( git rev-parse --show-toplevel) "
2323cd ${REPO_ROOT}
2424
25- if [[ -z " ${VERSION :- } " ]]; then
26- echo " VERSION must be set"
25+ if [[ -z " ${IMAGE_TAG :- } " ]]; then
26+ echo " IMAGE_TAG must be set"
2727 exit 1
2828fi
2929
3030kustomize build operator/config/default | \
31- sed -e " s@image: operator:.*@image: gcr.io/gke-release/cnrm/operator:${VERSION} @g" | \
31+ sed -e " s@image: operator:.*@image: gcr.io/gke-release/cnrm/operator:${IMAGE_TAG} @g" | \
32+ sed -e " s@imagePullPolicy: Always@imagePullPolicy: IfNotPresent@g" | \
3233 kubectl apply --server-side -n configconnector-operator-system -f -
3334
3435echo " Waiting for configconnector-operator statefulset to become ready"
3536kubectl wait -n configconnector-operator-system --for=jsonpath=' {.status.readyReplicas}' =1 statefulset/configconnector-operator
3637
37- # Configure in namespace mode, per instructions at https://cloud.google.com/config-connector/docs/how-to/install-namespaced
38- echo " Configuring namespace mode"
38+ # # Configure in namespace mode, per instructions at https://cloud.google.com/config-connector/docs/how-to/install-namespaced
39+ # echo "Configuring namespace mode"
40+ # cat <<EOF | kubectl apply --server-side -f -
41+ # apiVersion: core.cnrm.cloud.google.com/v1beta1
42+ # kind: ConfigConnector
43+ # metadata:
44+ # # the name is restricted to ensure that there is only ConfigConnector resource installed in your cluster
45+ # name: configconnector.core.cnrm.cloud.google.com
46+ # spec:
47+ # mode: namespaced
48+ # stateIntoSpec: Absent
49+ # credentialSecretName: kcc-google-service-account
50+ # EOF
51+
52+ # Configure in cluster mode so we can use a (fake) google service account
53+ echo " Creating namespace cnrm-system"
54+ kubectl create ns cnrm-system --dry-run=client -oyaml | kubectl apply --server-side -f -
55+
56+ echo " Configuring ConfigConnector in cluster mode"
3957cat << EOF | kubectl apply --server-side -f -
58+ apiVersion: v1
59+ kind: Secret
60+ metadata:
61+ name: kcc-google-service-account
62+ namespace: cnrm-system
63+ type: Opaque
64+ stringData:
65+ key.json: |
66+ {
67+ "type": "service_account",
68+ "project_id": "fake-project-id",
69+ "private_key_id": "fake-private-key-id",
70+ "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEAsGHDAdHZfi81LgVeeMHXYLgNDpcFYhoBykYtTDdNyA5AixID\n8JdKlCmZ6qLNnZrbs4JlBJfmzw6rjUC5bVBFg5NwYVBu3+3Msa4rgLsTGsjPH9rt\nC+QFnFhcmzg3zz8eeXBqJdhw7wmn1Xa9SsC3h6YWveBk98ecyE7yGe8J8xGphjk7\nEQ/KBmRK/EJD0ZwuYW1W4Bv5f5fca7qvi9rCprEmL8//uy0qCwoJj2jU3zc5p72M\npkSZb1XlYxxTEo/h9WCEvWS9pGhy6fJ0sA2RsBHqU4Y5O7MJEei9yu5fVSZUi05f\n/ggfUID+cFEq0Z/A98whKPEBBJ/STdEaqEEkBwIDAQABAoIBAED6EsvF0dihbXbh\ntXbI+h4AT5cTXYFRUV2B0sgkC3xqe65/2YG1Sl0gojoE9bhcxxjvLWWuy/F1Vw93\nS5gQnTsmgpzm86F8yg6euhn3UMdqOJtknDToMITzLFJmOHEZsJFOL1x3ysrUhMan\nsn4qVrIbJn+WfbumBoToSFnzbHflacOh06ZRbYa2bpSPMfGGFtwqQjRadn5+pync\nlCjaupcg209sM0qEk/BDSzHvWL1VgLMdiKBx574TSwS0o569+7vPNt92Ydi7kARo\nreOzkkF4L3xNhKZnmls2eGH6A8cp1KZXoMLFuO+IwvBMA0O29LsUlKJU4PjBrf+7\nwaslnMECgYEA5bJv0L6DKZQD3RCBLue4/mDg0GHZqAhJBS6IcaXeaWeH6PgGZggV\nMGkWnULltJIYFwtaueTfjWqciAeocKx+rqoRjuDMOGgcrEf6Y+b5AqF+IjQM66Ll\nIYPUt3FCIc69z5LNEtyP4DSWsFPJ5UhAoG4QRlDTqT5q0gKHFjeLdeECgYEAxJRk\nkrsWmdmUs5NH9pyhTdEDIc59EuJ8iOqOLzU8xUw6/s2GSClopEFJeeEoIWhLuPY3\nX3bFt4ppl/ksLh05thRs4wXRxqhnokjD3IcGu3l6Gb5QZTYwb0VfN+q2tWVEE8Qc\nPQURheUsM2aP/gpJVQvNsWVmkT0Ijc3J8bR2hucCgYEAjOF4e0ueHu5NwFTTJvWx\nHTRGLwkU+l66ipcT0MCvPW7miRk2s3XZqSuLV0Ekqi/A3sF0D/g0tQPipfwsb48c\n0/wzcLKoDyCsFW7AQG315IswVcIe+peaeYfl++1XZmzrNlkPtrXY+ObIVbXOavZ5\nzOw0xyvj5jYGRnCOci33N4ECgYA91EKx2ABq0YGw3aEj0u31MMlgZ7b1KqFq2wNv\nm7oKgEiJ/hC/P673AsXefNAHeetfOKn/77aOXQ2LTEb2FiEhwNjiquDpL+ywoVxh\nT2LxsmqSEEbvHpUrWlFxn/Rpp3k7ElKjaqWxTHyTii2+BHQ+OKEwq6kQA3deSpy6\n1jz1fwKBgQDLqbdq5FA63PWqApfNVykXukg9MASIcg/0fjADFaHTPDvJjhFutxRP\nppI5Q95P12CQ/eRBZKJnRlkhkL8tfPaWPzzOpCTjID7avRhx2oLmstmYuXx0HluE\ncqXLbAV9WDpIJ3Bpa/S8tWujWhLDmixn2JeAdurWS+naH9U9e4I6Rw==\n-----END RSA PRIVATE KEY-----\n",
71+ "client_email": "fake-service-account@fake-project-id.iam.gserviceaccount.com",
72+ "client_id": "fake-client-id",
73+ "auth_uri": "https://accounts.google.com/o/oauth2/auth",
74+ "token_uri": "https://oauth2.googleapis.com/token",
75+ "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
76+ "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/fake-service-account@fake-project-id.iam.gserviceaccount.com"
77+ }
78+ ---
79+
4080apiVersion: core.cnrm.cloud.google.com/v1beta1
4181kind: ConfigConnector
4282metadata:
4383 # the name is restricted to ensure that there is only ConfigConnector resource installed in your cluster
4484 name: configconnector.core.cnrm.cloud.google.com
4585spec:
46- mode: namespaced
86+ mode: cluster
4787 stateIntoSpec: Absent
88+ credentialSecretName: kcc-google-service-account
4889EOF
4990
50- # Create namespace
51- NS=config-control
52- echo " Creating namespace ${NS} "
53- kubectl create ns ${NS} --dry-run=client -oyaml | kubectl apply --server-side -f -
54-
55- echo " Creating ConfigConnectorContext in namespace ${NS} (with fake google service account)"
56- cat << EOF | kubectl apply --server-side -f -
57- apiVersion: core.cnrm.cloud.google.com/v1beta1
58- kind: ConfigConnectorContext
59- metadata:
60- # you can only have one ConfigConnectorContext per namespace
61- name: configconnectorcontext.core.cnrm.cloud.google.com
62- namespace: ${NS}
63- spec:
64- googleServiceAccount: "fake@fake.iam.gserviceaccount.com"
65- stateIntoSpec: Absent
66- EOF
6791
68- echo " Waiting for KCC bound to namespace ${NS} to become ready"
69- # We don't wait, because prom-to-sd is currently crashing
70- # kubectl wait -n cnrm-system --for=condition=Ready -l cnrm.cloud.google.com/scoped-namespace=${NS} pod
7192
72- echo " Creating StorageBucket in namespace ${NS} "
73- cat << EOF | kubectl apply -f -
74- apiVersion: storage.cnrm.cloud.google.com/v1beta1
75- kind: StorageBucket
76- metadata:
77- name: "kcc-test-${NS} "
78- namespace: "${NS} "
79- spec:
80- lifecycleRule:
81- - action:
82- type: Delete
83- condition:
84- age: 7
85- withState: ANY
86- versioning:
87- enabled: true
88- uniformBucketLevelAccess: true
89- EOF
93+ echo " Waiting for StorageBucket CRD to be created"
94+ kubectl wait --for=create crd/storagebuckets.storage.cnrm.cloud.google.com
9095
91- # Wait for StorageBucket creation attempt
92- # We can't kubectl wait, because we currently expect this to fail because we haven't set up IAM permissions
93- echo " Sleeping to allow for attempt at StorageBucket creation"
94- sleep 5
95- kubectl describe storagebucket -n ${NS}
96+ echo " Waiting for StorageBucket CRD to become ready"
97+ kubectl wait --for=jsonpath=' {.status.acceptedNames.kind}' =StorageBucket crd/storagebuckets.storage.cnrm.cloud.google.com
0 commit comments