Skip to content

Instantly share code, notes, and snippets.

@jbw976
Last active September 17, 2019 02:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jbw976/6c8197dddcb14a0d172a4ad52aaad176 to your computer and use it in GitHub Desktop.
Save jbw976/6c8197dddcb14a0d172a4ad52aaad176 to your computer and use it in GitHub Desktop.
GKE annotations
> k get crd gkeclusters.compute.gcp.crossplane.io -o yaml
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
annotations:
app.kubernetes.io/managed-by: stack-manager
stacks.crossplane.io/icon-data-uri: data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4IiB2aWV3Qm94PSIwIDAgMTI4IDEyOCI+CiAgPHRpdGxlPkNvbnRhaW5lciBFbmdpbmU8L3RpdGxlPgogIDxnPgogICAgPHBhdGggZD0iTTEyNi40Nyw1OC4xMmwtMjYuMy00NS43NEExMS41NiwxMS41NiwwLDAsMCw5MC4zMSw2LjVIMzcuN2ExMS41NSwxMS41NSwwLDAsMC05Ljg2LDUuODhMMS41Myw1OGExMS40OCwxMS40OCwwLDAsMCwwLDExLjQ0bDI2LjMsNDZhMTEuNzcsMTEuNzcsMCwwLDAsOS44Niw2LjA5SDkwLjNhMTEuNzMsMTEuNzMsMCwwLDAsOS44Ny02LjA2bDI2LjMtNDUuNzRBMTEuNzMsMTEuNzMsMCwwLDAsMTI2LjQ3LDU4LjEyWiIgc3R5bGU9ImZpbGw6ICM0Mjg1ZjQiLz4KICAgIDxwYXRoIGQ9Ik04OS42Myw0OC40NCw2NCwzNywzOS41LDUwLjMxbC0xLDI5LjMzTDgwLjMzLDEyMS41aDEwYTExLjczLDExLjczLDAsMCwwLDkuODctNi4wNmwyMC42MS0zNS44NVoiIHN0eWxlPSJvcGFjaXR5OiAwLjA3MDAwMDAwMDI5ODAyMztpc29sYXRpb246IGlzb2xhdGUiLz4KICAgIDxnIGlkPSJhcnQiPgogICAgICA8cGF0aCBkPSJNODksNDgsNjUuMzUsMzQuMzJhMi43MiwyLjcyLDAsMCwwLTIuNywwTDM5LDQ4YTIuNywyLjcsMCwwLDAtMS4zNSwyLjM0Vjc3LjY3QTIuNjksMi42OSwwLDAsMCwzOSw4MEw2Mi42NSw5My42OGEyLjcsMi43LDAsMCwwLDIuNywwTDg5LDgwYTIuNjksMi42OSwwLDAsMCwxLjM1LTIuMzRWNTAuMzRBMi43LDIuNywwLDAsMCw4OSw0OFpNODUuNzgsNzUuMDVsLTguMjYtNC43N1Y1Ny43MmwtMTIuMiw3Vjc4Ljg1TDc2LjIsNzIuNTdsOC4yNiw0Ljc3TDY0LDg5LjE1LDQzLjU0LDc3LjM0bDguMjYtNC43NywxMC44OCw2LjI4VjY0Ljc2bC0xMi4yLTdWNzAuMjhsLTguMjYsNC43N1Y1MS40M0w2Mi42OCwzOS42MnY5LjUzTDUxLjgsNTUuNDRsMTIuMiw3LDEyLjItN0w2NS4zMiw0OS4xNVYzOS42Mkw4NS43OCw1MS40M1Y3NS4wNVoiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K
stacks.crossplane.io/resource-category: Clusters
stacks.crossplane.io/resource-overview: |
Google Kubernetes Engine (GKE) is a managed, production-ready environment for deploying containerized applications.
stacks.crossplane.io/resource-overview-short: Reliable, efficient, and secured
way to run Kubernetes clusters
stacks.crossplane.io/resource-readme: |
## Containerized Application Management at Scale
Google Kubernetes Engine (GKE) is a managed, production-ready environment for deploying containerized applications.
It brings our latest innovations in developer productivity, resource efficiency, automated operations, and open source flexibility to accelerate your time to market.
Launched in 2015, Kubernetes Engine builds on Google's experience of running services like Gmail and YouTube in containers for over 12 years.
Kubernetes Engine allows you to get up and running with Kubernetes in no time, by completely eliminating the need to install, manage, and operate your own Kubernetes clusters.
stacks.crossplane.io/resource-title: Kubernetes Engine
stacks.crossplane.io/resource-title-plural: Kubernetes Engine
stacks.crossplane.io/stack-title: Google Cloud Platform (GCP) Crossplane Stack
creationTimestamp: "2019-09-17T01:55:07Z"
generation: 1
name: gkeclusters.compute.gcp.crossplane.io
ownerReferences:
- apiVersion: stacks.crossplane.io/v1alpha1
kind: ClusterStackInstall
name: stack-gcp
uid: 84aeb38a-bd1a-4aa4-bb23-4bf44440fc14
resourceVersion: "1611"
selfLink: /apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions/gkeclusters.compute.gcp.crossplane.io
uid: bc2f2b6f-ed62-433e-b5d3-2ff12f5f1ef1
spec:
additionalPrinterColumns:
- JSONPath: .status.bindingPhase
name: STATUS
type: string
- JSONPath: .status.state
name: STATE
type: string
- JSONPath: .status.clusterName
name: CLUSTER-NAME
type: string
- JSONPath: .status.endpoint
name: ENDPOINT
type: string
- JSONPath: .spec.classRef.name
name: CLUSTER-CLASS
type: string
- JSONPath: .spec.zone
name: LOCATION
type: string
- JSONPath: .spec.reclaimPolicy
name: RECLAIM-POLICY
type: string
- JSONPath: .metadata.creationTimestamp
name: AGE
type: date
conversion:
strategy: None
group: compute.gcp.crossplane.io
names:
kind: GKECluster
listKind: GKEClusterList
plural: gkeclusters
singular: gkecluster
preserveUnknownFields: true
scope: Namespaced
subresources: {}
validation:
openAPIV3Schema:
description: GKECluster is the Schema for the instances API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: GKEClusterSpec specifies the configuration of a GKE cluster.
properties:
addons:
items:
type: string
type: array
async:
type: boolean
claimRef:
description: ObjectReference contains enough information to let you
inspect or modify the referred object.
properties:
apiVersion:
description: API version of the referent.
type: string
fieldPath:
description: 'If referring to a piece of an object instead of an
entire object, this string should contain a valid JSON/Go field
access statement, such as desiredState.manifest.containers[2].
For example, if the object reference is to a container within
a pod, this would take on a value like: "spec.containers{name}"
(where "name" refers to the name of the container that triggered
the event) or if no container name is specified "spec.containers[2]"
(container with index 2 in this pod). This syntax is chosen only
to have some well-defined way of referencing a part of an object.
TODO: this design is not final and this field is subject to change
in the future.'
type: string
kind:
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
type: string
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
namespace:
description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
type: string
resourceVersion:
description: 'Specific resourceVersion to which this reference is
made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency'
type: string
uid:
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
type: string
type: object
classRef:
description: NonPortableClassReference is a reference to a non-portable
class.
properties:
apiVersion:
description: API version of the referent.
type: string
fieldPath:
description: 'If referring to a piece of an object instead of an
entire object, this string should contain a valid JSON/Go field
access statement, such as desiredState.manifest.containers[2].
For example, if the object reference is to a container within
a pod, this would take on a value like: "spec.containers{name}"
(where "name" refers to the name of the container that triggered
the event) or if no container name is specified "spec.containers[2]"
(container with index 2 in this pod). This syntax is chosen only
to have some well-defined way of referencing a part of an object.
TODO: this design is not final and this field is subject to change
in the future.'
type: string
kind:
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
type: string
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
namespace:
description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
type: string
resourceVersion:
description: 'Specific resourceVersion to which this reference is
made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency'
type: string
uid:
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
type: string
type: object
clusterIPV4CIDR:
type: string
clusterSecondaryRangeName:
type: string
clusterVersion:
type: string
createSubnetwork:
type: boolean
diskSize:
type: string
enableAutorepair:
type: boolean
enableAutoscaling:
type: boolean
enableAutoupgrade:
type: boolean
enableBasicAuth:
type: boolean
enableCloudEndpoints:
type: boolean
enableCloudLogging:
type: boolean
enableCloudMonitoring:
type: boolean
enableIPAlias:
type: boolean
enableKubernetesAlpha:
type: boolean
enableLegacyAuthorization:
type: boolean
enableNetworkPolicy:
type: boolean
imageType:
type: string
labels:
additionalProperties:
type: string
type: object
localSSDCount:
format: int64
type: integer
machineType:
type: string
maintenanceWindow:
type: string
maxNodes:
format: int64
type: integer
maxNodesPerPool:
format: int64
type: integer
minCPUPlatform:
type: string
minNodes:
format: int64
type: integer
network:
type: string
noIssueClientCertificates:
type: boolean
nodeIPV4CIDR:
type: string
nodeLabels:
items:
type: string
type: array
nodeLocations:
items:
type: string
type: array
nodeTaints:
items:
type: string
type: array
nodeVersion:
items:
type: string
type: array
numNodes:
format: int64
type: integer
password:
type: string
preemtible:
type: boolean
providerRef:
description: ObjectReference contains enough information to let you
inspect or modify the referred object.
properties:
apiVersion:
description: API version of the referent.
type: string
fieldPath:
description: 'If referring to a piece of an object instead of an
entire object, this string should contain a valid JSON/Go field
access statement, such as desiredState.manifest.containers[2].
For example, if the object reference is to a container within
a pod, this would take on a value like: "spec.containers{name}"
(where "name" refers to the name of the container that triggered
the event) or if no container name is specified "spec.containers[2]"
(container with index 2 in this pod). This syntax is chosen only
to have some well-defined way of referencing a part of an object.
TODO: this design is not final and this field is subject to change
in the future.'
type: string
kind:
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
type: string
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
namespace:
description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
type: string
resourceVersion:
description: 'Specific resourceVersion to which this reference is
made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency'
type: string
uid:
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
type: string
type: object
reclaimPolicy:
description: A ReclaimPolicy determines what should happen to managed
resources when their bound resource claims are deleted.
type: string
scopes:
items:
type: string
type: array
serviceAccount:
type: string
serviceIPV4CIDR:
type: string
servicesSecondaryRangeName:
type: string
subnetwork:
type: string
tags:
items:
type: string
type: array
username:
type: string
writeConnectionSecretToRef:
description: LocalObjectReference contains enough information to let
you locate the referenced object inside the same namespace.
properties:
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
TODO: Add other useful fields. apiVersion, kind, uid?'
type: string
type: object
zone:
type: string
required:
- providerRef
type: object
status:
description: GKEClusterStatus represents the status of a GKE cluster.
properties:
bindingPhase:
description: Phase represents the binding phase of the resource.
enum:
- Unbindable
- Unbound
- Bound
type: string
clusterName:
type: string
conditions:
description: Conditions of the managed resource.
items:
description: A Condition that may apply to a managed resource.
properties:
lastTransitionTime:
description: LastTransitionTime is the last time this condition
transitioned from one status to another.
format: date-time
type: string
message:
description: A Message containing details about this condition's
last transition from one status to another, if any.
type: string
reason:
description: A Reason for this condition's last transition from
one status to another.
type: string
status:
description: Status of this condition; is it currently True, False,
or Unknown?
type: string
type:
description: Type of this condition. At most one of each condition
type may apply to a managed resource at any point in time.
type: string
required:
- lastTransitionTime
- reason
- status
- type
type: object
type: array
endpoint:
type: string
state:
type: string
required:
- clusterName
- endpoint
type: object
type: object
version: v1alpha2
versions:
- name: v1alpha2
served: true
storage: true
status:
acceptedNames:
kind: GKECluster
listKind: GKEClusterList
plural: gkeclusters
singular: gkecluster
conditions:
- lastTransitionTime: "2019-09-17T01:55:07Z"
message: no conflicts found
reason: NoConflicts
status: "True"
type: NamesAccepted
- lastTransitionTime: null
message: the initial names have been accepted
reason: InitialNamesAccepted
status: "True"
type: Established
storedVersions:
- v1alpha2
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128">
<title>Container Engine</title>
<g>
<path d="M126.47,58.12l-26.3-45.74A11.56,11.56,0,0,0,90.31,6.5H37.7a11.55,11.55,0,0,0-9.86,5.88L1.53,58a11.48,11.48,0,0,0,0,11.44l26.3,46a11.77,11.77,0,0,0,9.86,6.09H90.3a11.73,11.73,0,0,0,9.87-6.06l26.3-45.74A11.73,11.73,0,0,0,126.47,58.12Z" style="fill: #4285f4"/>
<path d="M89.63,48.44,64,37,39.5,50.31l-1,29.33L80.33,121.5h10a11.73,11.73,0,0,0,9.87-6.06l20.61-35.85Z" style="opacity: 0.070000000298023;isolation: isolate"/>
<g id="art">
<path d="M89,48,65.35,34.32a2.72,2.72,0,0,0-2.7,0L39,48a2.7,2.7,0,0,0-1.35,2.34V77.67A2.69,2.69,0,0,0,39,80L62.65,93.68a2.7,2.7,0,0,0,2.7,0L89,80a2.69,2.69,0,0,0,1.35-2.34V50.34A2.7,2.7,0,0,0,89,48ZM85.78,75.05l-8.26-4.77V57.72l-12.2,7V78.85L76.2,72.57l8.26,4.77L64,89.15,43.54,77.34l8.26-4.77,10.88,6.28V64.76l-12.2-7V70.28l-8.26,4.77V51.43L62.68,39.62v9.53L51.8,55.44l12.2,7,12.2-7L65.32,49.15V39.62L85.78,51.43V75.05Z" style="fill: #fff"/>
</g>
</g>
</svg>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment