Created
October 14, 2019 14:29
-
-
Save dholbach/d55b93f8055ca6eb8df5e7895bb5e94c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff -ruN ./api/v1alpha1/coredns_types.go /home/daniel/dev/addon-operators/coredns/api/v1alpha1/coredns_types.go | |
--- ./api/v1alpha1/coredns_types.go 2019-10-14 16:24:08.777447288 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/api/v1alpha1/coredns_types.go 1970-01-01 01:00:00.000000000 +0100 | |
@@ -1,74 +0,0 @@ | |
- | |
- | |
-package v1alpha1 | |
- | |
-import ( | |
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | |
- addonv1alpha1 "sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/addon/pkg/apis/v1alpha1" | |
-) | |
- | |
-// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! | |
-// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized. | |
- | |
-// CoreDNSSpec defines the desired state of CoreDNS | |
-type CoreDNSSpec struct { | |
- addonv1alpha1.CommonSpec `json:",inline"` | |
- addonv1alpha1.PatchSpec `json:",inline"` | |
- | |
- // INSERT ADDITIONAL SPEC FIELDS - desired state of cluster | |
- // Important: Run "make" to regenerate code after modifying this file | |
-} | |
- | |
-// CoreDNSStatus defines the observed state of CoreDNS | |
-type CoreDNSStatus struct { | |
- addonv1alpha1.CommonStatus `json:",inline"` | |
- | |
- // INSERT ADDITIONAL STATUS FIELD - define observed state of cluster | |
- // Important: Run "make" to regenerate code after modifying this file | |
-} | |
- | |
-// +kubebuilder:object:root=true | |
- | |
-// CoreDNS is the Schema for the API | |
-type CoreDNS struct { | |
- metav1.TypeMeta `json:",inline"` | |
- metav1.ObjectMeta `json:"metadata,omitempty"` | |
- | |
- Spec CoreDNSSpec `json:"spec,omitempty"` | |
- Status CoreDNSStatus `json:"status,omitempty"` | |
-} | |
- | |
-var _ addonv1alpha1.CommonObject = &CoreDNS{} | |
- | |
-func (o *CoreDNS) ComponentName() string { | |
- return "coredns" | |
-} | |
- | |
-func (o *CoreDNS) CommonSpec() addonv1alpha1.CommonSpec { | |
- return o.Spec.CommonSpec | |
-} | |
- | |
-func (o *CoreDNS) PatchSpec() addonv1alpha1.PatchSpec { | |
- return o.Spec.PatchSpec | |
-} | |
- | |
-func (o *CoreDNS) GetCommonStatus() addonv1alpha1.CommonStatus { | |
- return o.Status.CommonStatus | |
-} | |
- | |
-func (o *CoreDNS) SetCommonStatus(s addonv1alpha1.CommonStatus) { | |
- o.Status.CommonStatus = s | |
-} | |
- | |
-// +kubebuilder:object:root=true | |
- | |
-// CoreDNSList contains a list of CoreDNS | |
-type CoreDNSList struct { | |
- metav1.TypeMeta `json:",inline"` | |
- metav1.ListMeta `json:"metadata,omitempty"` | |
- Items []CoreDNS `json:"items"` | |
-} | |
- | |
-func init() { | |
- SchemeBuilder.Register(&CoreDNS{}, &CoreDNSList{}) | |
-} | |
diff -ruN ./api/v1alpha1/groupversion_info.go /home/daniel/dev/addon-operators/coredns/api/v1alpha1/groupversion_info.go | |
--- ./api/v1alpha1/groupversion_info.go 2019-10-14 16:24:08.777447288 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/api/v1alpha1/groupversion_info.go 1970-01-01 01:00:00.000000000 +0100 | |
@@ -1,35 +0,0 @@ | |
-/* | |
- | |
-Licensed under the Apache License, Version 2.0 (the "License"); | |
-you may not use this file except in compliance with the License. | |
-You may obtain a copy of the License at | |
- | |
- http://www.apache.org/licenses/LICENSE-2.0 | |
- | |
-Unless required by applicable law or agreed to in writing, software | |
-distributed under the License is distributed on an "AS IS" BASIS, | |
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
-See the License for the specific language governing permissions and | |
-limitations under the License. | |
-*/ | |
- | |
-// Package v1alpha1 contains API Schema definitions for the addons v1alpha1 API group | |
-// +kubebuilder:object:generate=true | |
-// +groupName=addons.k8s.io | |
-package v1alpha1 | |
- | |
-import ( | |
- "k8s.io/apimachinery/pkg/runtime/schema" | |
- "sigs.k8s.io/controller-runtime/pkg/scheme" | |
-) | |
- | |
-var ( | |
- // GroupVersion is group version used to register these objects | |
- GroupVersion = schema.GroupVersion{Group: "addons.k8s.io", Version: "v1alpha1"} | |
- | |
- // SchemeBuilder is used to add go types to the GroupVersionKind scheme | |
- SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} | |
- | |
- // AddToScheme adds the types in this group-version to the given scheme. | |
- AddToScheme = SchemeBuilder.AddToScheme | |
-) | |
diff -ruN ./channels/packages/coredns/0.0.1/manifest.yaml /home/daniel/dev/addon-operators/coredns/channels/packages/coredns/0.0.1/manifest.yaml | |
--- ./channels/packages/coredns/0.0.1/manifest.yaml 2019-10-14 16:24:08.777447288 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/channels/packages/coredns/0.0.1/manifest.yaml 1970-01-01 01:00:00.000000000 +0100 | |
@@ -1 +0,0 @@ | |
-# Placeholder manifest - replace with the manifest for your addon | |
diff -ruN ./cmd/manager/main.go /home/daniel/dev/addon-operators/coredns/cmd/manager/main.go | |
--- ./cmd/manager/main.go 1970-01-01 01:00:00.000000000 +0100 | |
+++ /home/daniel/dev/addon-operators/coredns/cmd/manager/main.go 2019-07-01 14:57:36.616341088 +0200 | |
@@ -0,0 +1,88 @@ | |
+/* | |
+ | |
+Licensed under the Apache License, Version 2.0 (the "License"); | |
+you may not use this file except in compliance with the License. | |
+You may obtain a copy of the License at | |
+ | |
+ http://www.apache.org/licenses/LICENSE-2.0 | |
+ | |
+Unless required by applicable law or agreed to in writing, software | |
+distributed under the License is distributed on an "AS IS" BASIS, | |
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
+See the License for the specific language governing permissions and | |
+limitations under the License. | |
+*/ | |
+ | |
+package main | |
+ | |
+import ( | |
+ "flag" | |
+ "os" | |
+ | |
+ _ "k8s.io/client-go/plugin/pkg/client/auth/gcp" | |
+ "k8s.io/klog" | |
+ "k8s.io/klog/klogr" | |
+ "sigs.k8s.io/addon-operators/coredns/pkg/apis" | |
+ "sigs.k8s.io/addon-operators/coredns/pkg/controller" | |
+ "sigs.k8s.io/addon-operators/coredns/pkg/webhook" | |
+ "sigs.k8s.io/controller-runtime/pkg/client/config" | |
+ "sigs.k8s.io/controller-runtime/pkg/manager" | |
+ logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" | |
+ "sigs.k8s.io/controller-runtime/pkg/runtime/signals" | |
+ "sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/addon" | |
+) | |
+ | |
+func main() { | |
+ klog.InitFlags(nil) | |
+ addon.Init() | |
+ | |
+ var metricsAddr string | |
+ flag.StringVar(&metricsAddr, "metrics-addr", ":8080", "The address the metric endpoint binds to.") | |
+ flag.Parse() | |
+ logf.SetLogger(klogr.New()) | |
+ | |
+ // Get a config to talk to the apiserver | |
+ klog.Info("setting up client for manager") | |
+ cfg, err := config.GetConfig() | |
+ if err != nil { | |
+ klog.Error(err, "unable to set up client config") | |
+ os.Exit(1) | |
+ } | |
+ | |
+ // Create a new Cmd to provide shared dependencies and start components | |
+ klog.Info("setting up manager") | |
+ mgr, err := manager.New(cfg, manager.Options{MetricsBindAddress: metricsAddr}) | |
+ if err != nil { | |
+ klog.Error(err, "unable to set up overall controller manager") | |
+ os.Exit(1) | |
+ } | |
+ | |
+ klog.Info("Registering Components.") | |
+ | |
+ // Setup Scheme for all resources | |
+ klog.Info("setting up scheme") | |
+ if err := apis.AddToScheme(mgr.GetScheme()); err != nil { | |
+ klog.Error(err, "unable add APIs to scheme") | |
+ os.Exit(1) | |
+ } | |
+ | |
+ // Setup all Controllers | |
+ klog.Info("Setting up controller") | |
+ if err := controller.AddToManager(mgr); err != nil { | |
+ klog.Error(err, "unable to register controllers to the manager") | |
+ os.Exit(1) | |
+ } | |
+ | |
+ klog.Info("setting up webhooks") | |
+ if err := webhook.AddToManager(mgr); err != nil { | |
+ klog.Error(err, "unable to register webhooks to the manager") | |
+ os.Exit(1) | |
+ } | |
+ | |
+ // Start the Cmd | |
+ klog.Info("Starting the Cmd.") | |
+ if err := mgr.Start(signals.SetupSignalHandler()); err != nil { | |
+ klog.Error(err, "unable to run the manager") | |
+ os.Exit(1) | |
+ } | |
+} | |
diff -ruN ./config/certmanager/certificate.yaml /home/daniel/dev/addon-operators/coredns/config/certmanager/certificate.yaml | |
--- ./config/certmanager/certificate.yaml 2019-10-14 16:23:40.252832287 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/config/certmanager/certificate.yaml 1970-01-01 01:00:00.000000000 +0100 | |
@@ -1,24 +0,0 @@ | |
-# The following manifests contain a self-signed issuer CR and a certificate CR. | |
-# More document can be found at https://docs.cert-manager.io | |
-apiVersion: certmanager.k8s.io/v1alpha1 | |
-kind: Issuer | |
-metadata: | |
- name: selfsigned-issuer | |
- namespace: system | |
-spec: | |
- selfSigned: {} | |
---- | |
-apiVersion: certmanager.k8s.io/v1alpha1 | |
-kind: Certificate | |
-metadata: | |
- name: serving-cert # this name should match the one appeared in kustomizeconfig.yaml | |
- namespace: system | |
-spec: | |
- # $(SERVICE_NAME) and $(SERVICE_NAMESPACE) will be substituted by kustomize | |
- commonName: $(SERVICE_NAME).$(SERVICE_NAMESPACE).svc | |
- dnsNames: | |
- - $(SERVICE_NAME).$(SERVICE_NAMESPACE).svc.cluster.local | |
- issuerRef: | |
- kind: Issuer | |
- name: selfsigned-issuer | |
- secretName: webhook-server-cert # this secret will not be prefixed, since it's not managed by kustomize | |
diff -ruN ./config/certmanager/kustomization.yaml /home/daniel/dev/addon-operators/coredns/config/certmanager/kustomization.yaml | |
--- ./config/certmanager/kustomization.yaml 2019-10-14 16:23:40.252832287 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/config/certmanager/kustomization.yaml 1970-01-01 01:00:00.000000000 +0100 | |
@@ -1,5 +0,0 @@ | |
-resources: | |
-- certificate.yaml | |
- | |
-configurations: | |
-- kustomizeconfig.yaml | |
diff -ruN ./config/certmanager/kustomizeconfig.yaml /home/daniel/dev/addon-operators/coredns/config/certmanager/kustomizeconfig.yaml | |
--- ./config/certmanager/kustomizeconfig.yaml 2019-10-14 16:23:40.252832287 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/config/certmanager/kustomizeconfig.yaml 1970-01-01 01:00:00.000000000 +0100 | |
@@ -1,16 +0,0 @@ | |
-# This configuration is for teaching kustomize how to update name ref and var substitution | |
-nameReference: | |
-- kind: Issuer | |
- group: certmanager.k8s.io | |
- fieldSpecs: | |
- - kind: Certificate | |
- group: certmanager.k8s.io | |
- path: spec/issuerRef/name | |
- | |
-varReference: | |
-- kind: Certificate | |
- group: certmanager.k8s.io | |
- path: spec/commonName | |
-- kind: Certificate | |
- group: certmanager.k8s.io | |
- path: spec/dnsNames | |
diff -ruN ./config/crd/kustomization.yaml /home/daniel/dev/addon-operators/coredns/config/crd/kustomization.yaml | |
--- ./config/crd/kustomization.yaml 2019-10-14 16:24:08.777447288 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/config/crd/kustomization.yaml 1970-01-01 01:00:00.000000000 +0100 | |
@@ -1,21 +0,0 @@ | |
-# This kustomization.yaml is not intended to be run by itself, | |
-# since it depends on service name and namespace that are out of this kustomize package. | |
-# It should be run by config/default | |
-resources: | |
-- bases/addons.k8s.io_coredns.yaml | |
-# +kubebuilder:scaffold:crdkustomizeresource | |
- | |
-patchesStrategicMerge: | |
-# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix. | |
-# patches here are for enabling the conversion webhook for each CRD | |
-#- patches/webhook_in_coredns.yaml | |
-# +kubebuilder:scaffold:crdkustomizewebhookpatch | |
- | |
-# [CERTMANAGER] To enable webhook, uncomment all the sections with [CERTMANAGER] prefix. | |
-# patches here are for enabling the CA injection for each CRD | |
-#- patches/cainjection_in_coredns.yaml | |
-# +kubebuilder:scaffold:crdkustomizecainjectionpatch | |
- | |
-# the following config is for teaching kustomize how to do kustomization for CRDs. | |
-configurations: | |
-- kustomizeconfig.yaml | |
diff -ruN ./config/crd/kustomizeconfig.yaml /home/daniel/dev/addon-operators/coredns/config/crd/kustomizeconfig.yaml | |
--- ./config/crd/kustomizeconfig.yaml 2019-10-14 16:24:08.777447288 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/config/crd/kustomizeconfig.yaml 1970-01-01 01:00:00.000000000 +0100 | |
@@ -1,17 +0,0 @@ | |
-# This file is for teaching kustomize how to substitute name and namespace reference in CRD | |
-nameReference: | |
-- kind: Service | |
- version: v1 | |
- fieldSpecs: | |
- - kind: CustomResourceDefinition | |
- group: apiextensions.k8s.io | |
- path: spec/conversion/webhookClientConfig/service/name | |
- | |
-namespace: | |
-- kind: CustomResourceDefinition | |
- group: apiextensions.k8s.io | |
- path: spec/conversion/webhookClientConfig/service/namespace | |
- create: false | |
- | |
-varReference: | |
-- path: metadata/annotations | |
diff -ruN ./config/crd/patches/cainjection_in_coredns.yaml /home/daniel/dev/addon-operators/coredns/config/crd/patches/cainjection_in_coredns.yaml | |
--- ./config/crd/patches/cainjection_in_coredns.yaml 2019-10-14 16:24:08.777447288 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/config/crd/patches/cainjection_in_coredns.yaml 1970-01-01 01:00:00.000000000 +0100 | |
@@ -1,8 +0,0 @@ | |
-# The following patch adds a directive for certmanager to inject CA into the CRD | |
-# CRD conversion requires k8s 1.13 or later. | |
-apiVersion: apiextensions.k8s.io/v1beta1 | |
-kind: CustomResourceDefinition | |
-metadata: | |
- annotations: | |
- certmanager.k8s.io/inject-ca-from: $(CERTIFICATE_NAMESPACE)/$(CERTIFICATE_NAME) | |
- name: coredns.addons.k8s.io | |
diff -ruN ./config/crd/patches/webhook_in_coredns.yaml /home/daniel/dev/addon-operators/coredns/config/crd/patches/webhook_in_coredns.yaml | |
--- ./config/crd/patches/webhook_in_coredns.yaml 2019-10-14 16:24:08.777447288 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/config/crd/patches/webhook_in_coredns.yaml 1970-01-01 01:00:00.000000000 +0100 | |
@@ -1,17 +0,0 @@ | |
-# The following patch enables conversion webhook for CRD | |
-# CRD conversion requires k8s 1.13 or later. | |
-apiVersion: apiextensions.k8s.io/v1beta1 | |
-kind: CustomResourceDefinition | |
-metadata: | |
- name: coredns.addons.k8s.io | |
-spec: | |
- conversion: | |
- strategy: Webhook | |
- webhookClientConfig: | |
- # this is "\n" used as a placeholder, otherwise it will be rejected by the apiserver for being blank, | |
- # but we're going to set it later using the cert-manager (or potentially a patch if not using cert-manager) | |
- caBundle: Cg== | |
- service: | |
- namespace: system | |
- name: webhook-service | |
- path: /convert | |
diff -ruN ./config/crds/addons_v1alpha1_coredns.yaml /home/daniel/dev/addon-operators/coredns/config/crds/addons_v1alpha1_coredns.yaml | |
--- ./config/crds/addons_v1alpha1_coredns.yaml 1970-01-01 01:00:00.000000000 +0100 | |
+++ /home/daniel/dev/addon-operators/coredns/config/crds/addons_v1alpha1_coredns.yaml 2019-07-01 14:57:36.616341088 +0200 | |
@@ -0,0 +1,61 @@ | |
+apiVersion: apiextensions.k8s.io/v1beta1 | |
+kind: CustomResourceDefinition | |
+metadata: | |
+ creationTimestamp: null | |
+ labels: | |
+ controller-tools.k8s.io: "1.0" | |
+ name: coredns.addons.k8s.io | |
+spec: | |
+ group: addons.k8s.io | |
+ names: | |
+ kind: CoreDNS | |
+ plural: coredns | |
+ scope: Namespaced | |
+ validation: | |
+ openAPIV3Schema: | |
+ 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: | |
+ properties: | |
+ channel: | |
+ description: 'Channel specifies a channel that can be used to resolve | |
+ a specific addon, eg: stable It will be ignored if Version is specified' | |
+ type: string | |
+ patches: | |
+ items: | |
+ type: object | |
+ type: array | |
+ version: | |
+ description: Version specifies the exact addon version to be deployed, | |
+ eg 1.2.3 It should not be specified if Channel is specified | |
+ type: string | |
+ type: object | |
+ status: | |
+ properties: | |
+ errors: | |
+ items: | |
+ type: string | |
+ type: array | |
+ healthy: | |
+ type: boolean | |
+ required: | |
+ - healthy | |
+ type: object | |
+ version: v1alpha1 | |
+status: | |
+ acceptedNames: | |
+ kind: "" | |
+ plural: "" | |
+ conditions: [] | |
+ storedVersions: [] | |
diff -ruN ./config/default/kustomization.yaml /home/daniel/dev/addon-operators/coredns/config/default/kustomization.yaml | |
--- ./config/default/kustomization.yaml 2019-10-14 16:23:40.252832287 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/config/default/kustomization.yaml 2019-07-01 14:57:36.616341088 +0200 | |
@@ -1,27 +1,35 @@ | |
# Adds namespace to all resources. | |
-namespace: test-system | |
+namespace: coredns-system | |
# Value of this field is prepended to the | |
# names of all resources, e.g. a deployment named | |
# "wordpress" becomes "alices-wordpress". | |
# Note that it should also match with the prefix (text before '-') of the namespace | |
# field above. | |
-namePrefix: test- | |
+namePrefix: coredns- | |
# Labels to add to all resources and selectors. | |
#commonLabels: | |
# someName: someValue | |
-bases: | |
-- ../crd | |
-- ../rbac | |
-- ../manager | |
-# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix including the one in crd/kustomization.yaml | |
-#- ../webhook | |
-# [CERTMANAGER] To enable cert-manager, uncomment all sections with 'CERTMANAGER'. 'WEBHOOK' components are required. | |
-#- ../certmanager | |
+# Each entry in this list must resolve to an existing | |
+# resource definition in YAML. These are the resource | |
+# files that kustomize reads, modifies and emits as a | |
+# YAML string, with resources separated by document | |
+# markers ("---"). | |
+resources: | |
+- ../rbac/rbac_role.yaml | |
+- ../rbac/rbac_role_binding.yaml | |
+- ../manager/manager.yaml | |
+ # Comment the following 3 lines if you want to disable | |
+ # the auth proxy (https://github.com/brancz/kube-rbac-proxy) | |
+ # which protects your /metrics endpoint. | |
+- ../rbac/auth_proxy_service.yaml | |
+- ../rbac/auth_proxy_role.yaml | |
+- ../rbac/auth_proxy_role_binding.yaml | |
-patchesStrategicMerge: | |
+patches: | |
+- manager_image_patch.yaml | |
# Protect the /metrics endpoint by putting it behind auth. | |
# Only one of manager_auth_proxy_patch.yaml and | |
# manager_prometheus_metrics_patch.yaml should be enabled. | |
@@ -33,40 +41,9 @@ | |
# manager_prometheus_metrics_patch.yaml should be enabled. | |
#- manager_prometheus_metrics_patch.yaml | |
-# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix including the one in crd/kustomization.yaml | |
-#- manager_webhook_patch.yaml | |
- | |
-# [CERTMANAGER] To enable cert-manager, uncomment all sections with 'CERTMANAGER'. | |
-# Uncomment 'CERTMANAGER' sections in crd/kustomization.yaml to enable the CA injection in the admission webhooks. | |
-# 'CERTMANAGER' needs to be enabled to use ca injection | |
-#- webhookcainjection_patch.yaml | |
- | |
-# the following config is for teaching kustomize how to do var substitution | |
vars: | |
-# [CERTMANAGER] To enable cert-manager, uncomment all sections with 'CERTMANAGER' prefix. | |
-#- name: CERTIFICATE_NAMESPACE # namespace of the certificate CR | |
-# objref: | |
-# kind: Certificate | |
-# group: certmanager.k8s.io | |
-# version: v1alpha1 | |
-# name: serving-cert # this name should match the one in certificate.yaml | |
-# fieldref: | |
-# fieldpath: metadata.namespace | |
-#- name: CERTIFICATE_NAME | |
-# objref: | |
-# kind: Certificate | |
-# group: certmanager.k8s.io | |
-# version: v1alpha1 | |
-# name: serving-cert # this name should match the one in certificate.yaml | |
-#- name: SERVICE_NAMESPACE # namespace of the service | |
-# objref: | |
-# kind: Service | |
-# version: v1 | |
-# name: webhook-service | |
-# fieldref: | |
-# fieldpath: metadata.namespace | |
-#- name: SERVICE_NAME | |
-# objref: | |
-# kind: Service | |
-# version: v1 | |
-# name: webhook-service | |
+- name: WEBHOOK_SECRET_NAME | |
+ objref: | |
+ kind: Secret | |
+ name: webhook-server-secret | |
+ apiVersion: v1 | |
diff -ruN ./config/default/manager_auth_proxy_patch.yaml /home/daniel/dev/addon-operators/coredns/config/default/manager_auth_proxy_patch.yaml | |
--- ./config/default/manager_auth_proxy_patch.yaml 2019-10-14 16:23:40.252832287 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/config/default/manager_auth_proxy_patch.yaml 2019-07-01 14:57:36.616341088 +0200 | |
@@ -1,7 +1,7 @@ | |
# This patch inject a sidecar container which is a HTTP proxy for the controller manager, | |
# it performs RBAC authorization against the Kubernetes API using SubjectAccessReviews. | |
apiVersion: apps/v1 | |
-kind: Deployment | |
+kind: StatefulSet | |
metadata: | |
name: controller-manager | |
namespace: system | |
@@ -10,7 +10,7 @@ | |
spec: | |
containers: | |
- name: kube-rbac-proxy | |
- image: gcr.io/kubebuilder/kube-rbac-proxy:v0.4.1 | |
+ image: gcr.io/kubebuilder/kube-rbac-proxy:v0.4.0 | |
args: | |
- "--secure-listen-address=0.0.0.0:8443" | |
- "--upstream=http://127.0.0.1:8080/" | |
@@ -22,4 +22,3 @@ | |
- name: manager | |
args: | |
- "--metrics-addr=127.0.0.1:8080" | |
- - "--enable-leader-election" | |
diff -ruN ./config/default/manager_image_patch.yaml /home/daniel/dev/addon-operators/coredns/config/default/manager_image_patch.yaml | |
--- ./config/default/manager_image_patch.yaml 1970-01-01 01:00:00.000000000 +0100 | |
+++ /home/daniel/dev/addon-operators/coredns/config/default/manager_image_patch.yaml 2019-07-01 14:57:36.616341088 +0200 | |
@@ -0,0 +1,12 @@ | |
+apiVersion: apps/v1 | |
+kind: StatefulSet | |
+metadata: | |
+ name: controller-manager | |
+ namespace: system | |
+spec: | |
+ template: | |
+ spec: | |
+ containers: | |
+ # Change the value of image field below to your controller image URL | |
+ - image: IMAGE_URL | |
+ name: manager | |
diff -ruN ./config/default/manager_prometheus_metrics_patch.yaml /home/daniel/dev/addon-operators/coredns/config/default/manager_prometheus_metrics_patch.yaml | |
--- ./config/default/manager_prometheus_metrics_patch.yaml 2019-10-14 16:23:40.252832287 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/config/default/manager_prometheus_metrics_patch.yaml 2019-07-01 14:57:36.620341144 +0200 | |
@@ -1,6 +1,6 @@ | |
# This patch enables Prometheus scraping for the manager pod. | |
apiVersion: apps/v1 | |
-kind: Deployment | |
+kind: StatefulSet | |
metadata: | |
name: controller-manager | |
namespace: system | |
diff -ruN ./config/default/manager_webhook_patch.yaml /home/daniel/dev/addon-operators/coredns/config/default/manager_webhook_patch.yaml | |
--- ./config/default/manager_webhook_patch.yaml 2019-10-14 16:23:40.252832287 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/config/default/manager_webhook_patch.yaml 1970-01-01 01:00:00.000000000 +0100 | |
@@ -1,23 +0,0 @@ | |
-apiVersion: apps/v1 | |
-kind: Deployment | |
-metadata: | |
- name: controller-manager | |
- namespace: system | |
-spec: | |
- template: | |
- spec: | |
- containers: | |
- - name: manager | |
- ports: | |
- - containerPort: 9443 | |
- name: webhook-server | |
- protocol: TCP | |
- volumeMounts: | |
- - mountPath: /tmp/k8s-webhook-server/serving-certs | |
- name: cert | |
- readOnly: true | |
- volumes: | |
- - name: cert | |
- secret: | |
- defaultMode: 420 | |
- secretName: webhook-server-cert | |
diff -ruN ./config/default/webhookcainjection_patch.yaml /home/daniel/dev/addon-operators/coredns/config/default/webhookcainjection_patch.yaml | |
--- ./config/default/webhookcainjection_patch.yaml 2019-10-14 16:23:40.252832287 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/config/default/webhookcainjection_patch.yaml 1970-01-01 01:00:00.000000000 +0100 | |
@@ -1,15 +0,0 @@ | |
-# This patch add annotation to admission webhook config and | |
-# the variables $(CERTIFICATE_NAMESPACE) and $(CERTIFICATE_NAME) will be substituted by kustomize. | |
-apiVersion: admissionregistration.k8s.io/v1beta1 | |
-kind: MutatingWebhookConfiguration | |
-metadata: | |
- name: mutating-webhook-configuration | |
- annotations: | |
- certmanager.k8s.io/inject-ca-from: $(CERTIFICATE_NAMESPACE)/$(CERTIFICATE_NAME) | |
---- | |
-apiVersion: admissionregistration.k8s.io/v1beta1 | |
-kind: ValidatingWebhookConfiguration | |
-metadata: | |
- name: validating-webhook-configuration | |
- annotations: | |
- certmanager.k8s.io/inject-ca-from: $(CERTIFICATE_NAMESPACE)/$(CERTIFICATE_NAME) | |
diff -ruN ./config/manager/kustomization.yaml /home/daniel/dev/addon-operators/coredns/config/manager/kustomization.yaml | |
--- ./config/manager/kustomization.yaml 2019-10-14 16:23:40.252832287 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/config/manager/kustomization.yaml 1970-01-01 01:00:00.000000000 +0100 | |
@@ -1,2 +0,0 @@ | |
-resources: | |
-- manager.yaml | |
diff -ruN ./config/manager/manager.yaml /home/daniel/dev/addon-operators/coredns/config/manager/manager.yaml | |
--- ./config/manager/manager.yaml 2019-10-14 16:23:40.252832287 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/config/manager/manager.yaml 2019-07-01 14:57:36.620341144 +0200 | |
@@ -3,32 +3,57 @@ | |
metadata: | |
labels: | |
control-plane: controller-manager | |
+ controller-tools.k8s.io: "1.0" | |
name: system | |
--- | |
+apiVersion: v1 | |
+kind: Service | |
+metadata: | |
+ name: controller-manager-service | |
+ namespace: system | |
+ labels: | |
+ control-plane: controller-manager | |
+ controller-tools.k8s.io: "1.0" | |
+spec: | |
+ selector: | |
+ control-plane: controller-manager | |
+ controller-tools.k8s.io: "1.0" | |
+ ports: | |
+ - port: 443 | |
+--- | |
apiVersion: apps/v1 | |
-kind: Deployment | |
+kind: StatefulSet | |
metadata: | |
name: controller-manager | |
namespace: system | |
labels: | |
control-plane: controller-manager | |
+ controller-tools.k8s.io: "1.0" | |
spec: | |
selector: | |
matchLabels: | |
control-plane: controller-manager | |
- replicas: 1 | |
+ controller-tools.k8s.io: "1.0" | |
+ serviceName: controller-manager-service | |
template: | |
metadata: | |
labels: | |
control-plane: controller-manager | |
+ controller-tools.k8s.io: "1.0" | |
spec: | |
containers: | |
- command: | |
- /manager | |
- args: | |
- - --enable-leader-election | |
image: controller:latest | |
+ imagePullPolicy: Always | |
name: manager | |
+ env: | |
+ - name: POD_NAMESPACE | |
+ valueFrom: | |
+ fieldRef: | |
+ fieldPath: metadata.namespace | |
+ - name: SECRET_NAME | |
+ value: $(WEBHOOK_SECRET_NAME) | |
resources: | |
limits: | |
cpu: 100m | |
@@ -36,4 +61,23 @@ | |
requests: | |
cpu: 100m | |
memory: 20Mi | |
+ ports: | |
+ - containerPort: 9876 | |
+ name: webhook-server | |
+ protocol: TCP | |
+ volumeMounts: | |
+ - mountPath: /tmp/cert | |
+ name: cert | |
+ readOnly: true | |
terminationGracePeriodSeconds: 10 | |
+ volumes: | |
+ - name: cert | |
+ secret: | |
+ defaultMode: 420 | |
+ secretName: webhook-server-secret | |
+--- | |
+apiVersion: v1 | |
+kind: Secret | |
+metadata: | |
+ name: webhook-server-secret | |
+ namespace: system | |
diff -ruN ./config/rbac/auth_proxy_service.yaml /home/daniel/dev/addon-operators/coredns/config/rbac/auth_proxy_service.yaml | |
--- ./config/rbac/auth_proxy_service.yaml 2019-10-14 16:23:40.252832287 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/config/rbac/auth_proxy_service.yaml 2019-07-01 14:57:36.620341144 +0200 | |
@@ -7,6 +7,7 @@ | |
prometheus.io/scrape: "true" | |
labels: | |
control-plane: controller-manager | |
+ controller-tools.k8s.io: "1.0" | |
name: controller-manager-metrics-service | |
namespace: system | |
spec: | |
@@ -16,3 +17,4 @@ | |
targetPort: https | |
selector: | |
control-plane: controller-manager | |
+ controller-tools.k8s.io: "1.0" | |
diff -ruN ./config/rbac/kustomization.yaml /home/daniel/dev/addon-operators/coredns/config/rbac/kustomization.yaml | |
--- ./config/rbac/kustomization.yaml 2019-10-14 16:23:40.252832287 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/config/rbac/kustomization.yaml 1970-01-01 01:00:00.000000000 +0100 | |
@@ -1,11 +0,0 @@ | |
-resources: | |
-- role.yaml | |
-- role_binding.yaml | |
-- leader_election_role.yaml | |
-- leader_election_role_binding.yaml | |
-# Comment the following 3 lines if you want to disable | |
-# the auth proxy (https://github.com/brancz/kube-rbac-proxy) | |
-# which protects your /metrics endpoint. | |
-- auth_proxy_service.yaml | |
-- auth_proxy_role.yaml | |
-- auth_proxy_role_binding.yaml | |
diff -ruN ./config/rbac/leader_election_role_binding.yaml /home/daniel/dev/addon-operators/coredns/config/rbac/leader_election_role_binding.yaml | |
--- ./config/rbac/leader_election_role_binding.yaml 2019-10-14 16:23:40.252832287 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/config/rbac/leader_election_role_binding.yaml 1970-01-01 01:00:00.000000000 +0100 | |
@@ -1,12 +0,0 @@ | |
-apiVersion: rbac.authorization.k8s.io/v1 | |
-kind: RoleBinding | |
-metadata: | |
- name: leader-election-rolebinding | |
-roleRef: | |
- apiGroup: rbac.authorization.k8s.io | |
- kind: Role | |
- name: leader-election-role | |
-subjects: | |
-- kind: ServiceAccount | |
- name: default | |
- namespace: system | |
diff -ruN ./config/rbac/leader_election_role.yaml /home/daniel/dev/addon-operators/coredns/config/rbac/leader_election_role.yaml | |
--- ./config/rbac/leader_election_role.yaml 2019-10-14 16:23:40.252832287 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/config/rbac/leader_election_role.yaml 1970-01-01 01:00:00.000000000 +0100 | |
@@ -1,32 +0,0 @@ | |
-# permissions to do leader election. | |
-apiVersion: rbac.authorization.k8s.io/v1 | |
-kind: Role | |
-metadata: | |
- name: leader-election-role | |
-rules: | |
-- apiGroups: | |
- - "" | |
- resources: | |
- - configmaps | |
- verbs: | |
- - get | |
- - list | |
- - watch | |
- - create | |
- - update | |
- - patch | |
- - delete | |
-- apiGroups: | |
- - "" | |
- resources: | |
- - configmaps/status | |
- verbs: | |
- - get | |
- - update | |
- - patch | |
-- apiGroups: | |
- - "" | |
- resources: | |
- - events | |
- verbs: | |
- - create | |
diff -ruN ./config/rbac/manager_role_binding.yaml /home/daniel/dev/addon-operators/coredns/config/rbac/manager_role_binding.yaml | |
--- ./config/rbac/manager_role_binding.yaml 1970-01-01 01:00:00.000000000 +0100 | |
+++ /home/daniel/dev/addon-operators/coredns/config/rbac/manager_role_binding.yaml 2019-07-01 14:57:36.620341144 +0200 | |
@@ -0,0 +1,12 @@ | |
+apiVersion: rbac.authorization.k8s.io/v1 | |
+kind: ClusterRoleBinding | |
+metadata: | |
+ creationTimestamp: null | |
+ name: manager-rolebinding | |
+roleRef: | |
+ apiGroup: rbac.authorization.k8s.io | |
+ kind: ClusterRole | |
+ name: manager-role | |
+subjects: | |
+- kind: ServiceAccount | |
+ name: "" | |
diff -ruN ./config/rbac/manager_role.yaml /home/daniel/dev/addon-operators/coredns/config/rbac/manager_role.yaml | |
--- ./config/rbac/manager_role.yaml 1970-01-01 01:00:00.000000000 +0100 | |
+++ /home/daniel/dev/addon-operators/coredns/config/rbac/manager_role.yaml 2019-07-01 14:57:36.620341144 +0200 | |
@@ -0,0 +1,116 @@ | |
+apiVersion: rbac.authorization.k8s.io/v1 | |
+kind: ClusterRole | |
+metadata: | |
+ creationTimestamp: null | |
+ name: manager-role | |
+rules: | |
+- apiGroups: | |
+ - addons.k8s.io | |
+ resources: | |
+ - coredns | |
+ verbs: | |
+ - get | |
+ - list | |
+ - watch | |
+ - create | |
+ - update | |
+ - patch | |
+ - delete | |
+- apiGroups: | |
+ - addons.k8s.io | |
+ resources: | |
+ - coredns/status | |
+ verbs: | |
+ - get | |
+ - update | |
+ - patch | |
+- apiGroups: | |
+ - apps | |
+ - extensions | |
+ resources: | |
+ - deployments | |
+ verbs: | |
+ - get | |
+ - list | |
+ - watch | |
+ - create | |
+ - update | |
+ - delete | |
+ - patch | |
+- apiGroups: | |
+ - "" | |
+ resources: | |
+ - configmaps | |
+ - serviceaccounts | |
+ - services | |
+ verbs: | |
+ - get | |
+ - list | |
+ - watch | |
+ - create | |
+ - update | |
+ - delete | |
+ - patch | |
+- apiGroups: | |
+ - rbac.authorization.k8s.io | |
+ resources: | |
+ - roles | |
+ - rolebindings | |
+ - clusterroles | |
+ - clusterrolebindings | |
+ verbs: | |
+ - get | |
+ - list | |
+ - watch | |
+ - create | |
+ - update | |
+ - delete | |
+ - patch | |
+- apiGroups: | |
+ - "" | |
+ resources: | |
+ - endpoints | |
+ - namespaces | |
+ - nodes | |
+ - pods | |
+ verbs: | |
+ - get | |
+ - list | |
+ - watch | |
+- apiGroups: | |
+ - admissionregistration.k8s.io | |
+ resources: | |
+ - mutatingwebhookconfigurations | |
+ - validatingwebhookconfigurations | |
+ verbs: | |
+ - get | |
+ - list | |
+ - watch | |
+ - create | |
+ - update | |
+ - patch | |
+ - delete | |
+- apiGroups: | |
+ - "" | |
+ resources: | |
+ - secrets | |
+ verbs: | |
+ - get | |
+ - list | |
+ - watch | |
+ - create | |
+ - update | |
+ - patch | |
+ - delete | |
+- apiGroups: | |
+ - "" | |
+ resources: | |
+ - services | |
+ verbs: | |
+ - get | |
+ - list | |
+ - watch | |
+ - create | |
+ - update | |
+ - patch | |
+ - delete | |
diff -ruN ./config/rbac/role_binding.yaml /home/daniel/dev/addon-operators/coredns/config/rbac/role_binding.yaml | |
--- ./config/rbac/role_binding.yaml 2019-10-14 16:23:40.252832287 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/config/rbac/role_binding.yaml 1970-01-01 01:00:00.000000000 +0100 | |
@@ -1,12 +0,0 @@ | |
-apiVersion: rbac.authorization.k8s.io/v1 | |
-kind: ClusterRoleBinding | |
-metadata: | |
- name: manager-rolebinding | |
-roleRef: | |
- apiGroup: rbac.authorization.k8s.io | |
- kind: ClusterRole | |
- name: manager-role | |
-subjects: | |
-- kind: ServiceAccount | |
- name: default | |
- namespace: system | |
diff -ruN ./config/samples/addons_v1alpha1_coredns.yaml /home/daniel/dev/addon-operators/coredns/config/samples/addons_v1alpha1_coredns.yaml | |
--- ./config/samples/addons_v1alpha1_coredns.yaml 2019-10-14 16:24:08.777447288 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/config/samples/addons_v1alpha1_coredns.yaml 2019-07-01 14:57:36.620341144 +0200 | |
@@ -1,7 +1,15 @@ | |
apiVersion: addons.k8s.io/v1alpha1 | |
kind: CoreDNS | |
metadata: | |
- name: coredns-sample | |
+ name: default | |
+ namespace: kube-system | |
spec: | |
- # Add fields here | |
- foo: bar | |
+ channel: stable | |
+ patches: | |
+ - apiVersion: apps/v1 | |
+ kind: Deployment | |
+ metadata: | |
+ name: coredns | |
+ namespace: kube-system | |
+ labels: | |
+ foo: bar | |
diff -ruN ./config/webhook/kustomization.yaml /home/daniel/dev/addon-operators/coredns/config/webhook/kustomization.yaml | |
--- ./config/webhook/kustomization.yaml 2019-10-14 16:23:40.252832287 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/config/webhook/kustomization.yaml 1970-01-01 01:00:00.000000000 +0100 | |
@@ -1,6 +0,0 @@ | |
-resources: | |
-- manifests.yaml | |
-- service.yaml | |
- | |
-configurations: | |
-- kustomizeconfig.yaml | |
diff -ruN ./config/webhook/kustomizeconfig.yaml /home/daniel/dev/addon-operators/coredns/config/webhook/kustomizeconfig.yaml | |
--- ./config/webhook/kustomizeconfig.yaml 2019-10-14 16:23:40.252832287 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/config/webhook/kustomizeconfig.yaml 1970-01-01 01:00:00.000000000 +0100 | |
@@ -1,25 +0,0 @@ | |
-# the following config is for teaching kustomize where to look at when substituting vars. | |
-# It requires kustomize v2.1.0 or newer to work properly. | |
-nameReference: | |
-- kind: Service | |
- version: v1 | |
- fieldSpecs: | |
- - kind: MutatingWebhookConfiguration | |
- group: admissionregistration.k8s.io | |
- path: webhooks/clientConfig/service/name | |
- - kind: ValidatingWebhookConfiguration | |
- group: admissionregistration.k8s.io | |
- path: webhooks/clientConfig/service/name | |
- | |
-namespace: | |
-- kind: MutatingWebhookConfiguration | |
- group: admissionregistration.k8s.io | |
- path: webhooks/clientConfig/service/namespace | |
- create: true | |
-- kind: ValidatingWebhookConfiguration | |
- group: admissionregistration.k8s.io | |
- path: webhooks/clientConfig/service/namespace | |
- create: true | |
- | |
-varReference: | |
-- path: metadata/annotations | |
diff -ruN ./config/webhook/service.yaml /home/daniel/dev/addon-operators/coredns/config/webhook/service.yaml | |
--- ./config/webhook/service.yaml 2019-10-14 16:23:40.252832287 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/config/webhook/service.yaml 1970-01-01 01:00:00.000000000 +0100 | |
@@ -1,12 +0,0 @@ | |
- | |
-apiVersion: v1 | |
-kind: Service | |
-metadata: | |
- name: webhook-service | |
- namespace: system | |
-spec: | |
- ports: | |
- - port: 443 | |
- targetPort: 9443 | |
- selector: | |
- control-plane: controller-manager | |
diff -ruN ./controllers/coredns_controller.go /home/daniel/dev/addon-operators/coredns/controllers/coredns_controller.go | |
--- ./controllers/coredns_controller.go 2019-10-14 16:24:09.149459210 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/controllers/coredns_controller.go 1970-01-01 01:00:00.000000000 +0100 | |
@@ -1,73 +0,0 @@ | |
- | |
- | |
-package controllers | |
- | |
-import ( | |
- "sigs.k8s.io/controller-runtime/pkg/controller" | |
- "sigs.k8s.io/controller-runtime/pkg/handler" | |
- "sigs.k8s.io/controller-runtime/pkg/reconcile" | |
- "sigs.k8s.io/controller-runtime/pkg/source" | |
- "sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/addon" | |
- "sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/addon/pkg/status" | |
- "sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/declarative" | |
- | |
- "github.com/go-logr/logr" | |
- ctrl "sigs.k8s.io/controller-runtime" | |
- "sigs.k8s.io/controller-runtime/pkg/client" | |
- | |
- api "github.com/kubernetes-sigs/test/api/v1alpha1" | |
-) | |
- | |
-var _ reconcile.Reconciler = &CoreDNSReconciler{} | |
- | |
-// CoreDNSReconciler reconciles a CoreDNS object | |
-type CoreDNSReconciler struct { | |
- client.Client | |
- Log logr.Logger | |
- | |
- declarative.Reconciler | |
-} | |
- | |
-// +kubebuilder:rbac:groups=addons.k8s.io,resources=coredns,verbs=get;list;watch;create;update;patch;delete | |
-// +kubebuilder:rbac:groups=addons.k8s.io,resources=coredns/status,verbs=get;update;patch | |
- | |
-func (r *CoreDNSReconciler) SetupWithManager(mgr ctrl.Manager) error { | |
- addon.Init() | |
- | |
- labels := map[string]string{ | |
- "k8s-app": "coredns", | |
- } | |
- | |
- watchLabels := declarative.SourceLabel(mgr.GetScheme()) | |
- | |
- if err := r.Reconciler.Init(mgr, &api.CoreDNS{}, | |
- declarative.WithObjectTransform(declarative.AddLabels(labels)), | |
- declarative.WithOwner(declarative.SourceAsOwner), | |
- declarative.WithLabels(watchLabels), | |
- declarative.WithStatus(status.NewBasic(mgr.GetClient())), | |
- // TODO: add an application to your manifest: declarative.WithObjectTransform(addon.TransformApplicationFromStatus), | |
- // TODO: add an application to your manifest: declarative.WithManagedApplication(watchLabels), | |
- declarative.WithObjectTransform(addon.ApplyPatches), | |
- ); err != nil { | |
- return err | |
- } | |
- | |
- c, err := controller.New("coredns-controller", mgr, controller.Options{Reconciler: r}) | |
- if err != nil { | |
- return err | |
- } | |
- | |
- // Watch for changes to CoreDNS | |
- err = c.Watch(&source.Kind{Type: &api.CoreDNS{}}, &handler.EnqueueRequestForObject{}) | |
- if err != nil { | |
- return err | |
- } | |
- | |
- // Watch for changes to deployed objects | |
- _, err = declarative.WatchAll(mgr.GetConfig(), c, r, watchLabels) | |
- if err != nil { | |
- return err | |
- } | |
- | |
- return nil | |
-} | |
diff -ruN ./diff /home/daniel/dev/addon-operators/coredns/diff | |
--- ./diff 2019-10-14 16:26:42.045858915 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/diff 1970-01-01 01:00:00.000000000 +0100 | |
@@ -1,1094 +0,0 @@ | |
-diff -ruN ./api/v1alpha1/coredns_types.go /home/daniel/dev/addon-operators/coredns/api/v1alpha1/coredns_types.go | |
---- ./api/v1alpha1/coredns_types.go 2019-10-14 16:24:08.777447288 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/api/v1alpha1/coredns_types.go 1970-01-01 01:00:00.000000000 +0100 | |
-@@ -1,74 +0,0 @@ | |
-- | |
-- | |
--package v1alpha1 | |
-- | |
--import ( | |
-- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | |
-- addonv1alpha1 "sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/addon/pkg/apis/v1alpha1" | |
--) | |
-- | |
--// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! | |
--// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized. | |
-- | |
--// CoreDNSSpec defines the desired state of CoreDNS | |
--type CoreDNSSpec struct { | |
-- addonv1alpha1.CommonSpec `json:",inline"` | |
-- addonv1alpha1.PatchSpec `json:",inline"` | |
-- | |
-- // INSERT ADDITIONAL SPEC FIELDS - desired state of cluster | |
-- // Important: Run "make" to regenerate code after modifying this file | |
--} | |
-- | |
--// CoreDNSStatus defines the observed state of CoreDNS | |
--type CoreDNSStatus struct { | |
-- addonv1alpha1.CommonStatus `json:",inline"` | |
-- | |
-- // INSERT ADDITIONAL STATUS FIELD - define observed state of cluster | |
-- // Important: Run "make" to regenerate code after modifying this file | |
--} | |
-- | |
--// +kubebuilder:object:root=true | |
-- | |
--// CoreDNS is the Schema for the API | |
--type CoreDNS struct { | |
-- metav1.TypeMeta `json:",inline"` | |
-- metav1.ObjectMeta `json:"metadata,omitempty"` | |
-- | |
-- Spec CoreDNSSpec `json:"spec,omitempty"` | |
-- Status CoreDNSStatus `json:"status,omitempty"` | |
--} | |
-- | |
--var _ addonv1alpha1.CommonObject = &CoreDNS{} | |
-- | |
--func (o *CoreDNS) ComponentName() string { | |
-- return "coredns" | |
--} | |
-- | |
--func (o *CoreDNS) CommonSpec() addonv1alpha1.CommonSpec { | |
-- return o.Spec.CommonSpec | |
--} | |
-- | |
--func (o *CoreDNS) PatchSpec() addonv1alpha1.PatchSpec { | |
-- return o.Spec.PatchSpec | |
--} | |
-- | |
--func (o *CoreDNS) GetCommonStatus() addonv1alpha1.CommonStatus { | |
-- return o.Status.CommonStatus | |
--} | |
-- | |
--func (o *CoreDNS) SetCommonStatus(s addonv1alpha1.CommonStatus) { | |
-- o.Status.CommonStatus = s | |
--} | |
-- | |
--// +kubebuilder:object:root=true | |
-- | |
--// CoreDNSList contains a list of CoreDNS | |
--type CoreDNSList struct { | |
-- metav1.TypeMeta `json:",inline"` | |
-- metav1.ListMeta `json:"metadata,omitempty"` | |
-- Items []CoreDNS `json:"items"` | |
--} | |
-- | |
--func init() { | |
-- SchemeBuilder.Register(&CoreDNS{}, &CoreDNSList{}) | |
--} | |
-diff -ruN ./api/v1alpha1/groupversion_info.go /home/daniel/dev/addon-operators/coredns/api/v1alpha1/groupversion_info.go | |
---- ./api/v1alpha1/groupversion_info.go 2019-10-14 16:24:08.777447288 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/api/v1alpha1/groupversion_info.go 1970-01-01 01:00:00.000000000 +0100 | |
-@@ -1,35 +0,0 @@ | |
--/* | |
-- | |
--Licensed under the Apache License, Version 2.0 (the "License"); | |
--you may not use this file except in compliance with the License. | |
--You may obtain a copy of the License at | |
-- | |
-- http://www.apache.org/licenses/LICENSE-2.0 | |
-- | |
--Unless required by applicable law or agreed to in writing, software | |
--distributed under the License is distributed on an "AS IS" BASIS, | |
--WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
--See the License for the specific language governing permissions and | |
--limitations under the License. | |
--*/ | |
-- | |
--// Package v1alpha1 contains API Schema definitions for the addons v1alpha1 API group | |
--// +kubebuilder:object:generate=true | |
--// +groupName=addons.k8s.io | |
--package v1alpha1 | |
-- | |
--import ( | |
-- "k8s.io/apimachinery/pkg/runtime/schema" | |
-- "sigs.k8s.io/controller-runtime/pkg/scheme" | |
--) | |
-- | |
--var ( | |
-- // GroupVersion is group version used to register these objects | |
-- GroupVersion = schema.GroupVersion{Group: "addons.k8s.io", Version: "v1alpha1"} | |
-- | |
-- // SchemeBuilder is used to add go types to the GroupVersionKind scheme | |
-- SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} | |
-- | |
-- // AddToScheme adds the types in this group-version to the given scheme. | |
-- AddToScheme = SchemeBuilder.AddToScheme | |
--) | |
-diff -ruN ./channels/packages/coredns/0.0.1/manifest.yaml /home/daniel/dev/addon-operators/coredns/channels/packages/coredns/0.0.1/manifest.yaml | |
---- ./channels/packages/coredns/0.0.1/manifest.yaml 2019-10-14 16:24:08.777447288 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/channels/packages/coredns/0.0.1/manifest.yaml 1970-01-01 01:00:00.000000000 +0100 | |
-@@ -1 +0,0 @@ | |
--# Placeholder manifest - replace with the manifest for your addon | |
-diff -ruN ./cmd/manager/main.go /home/daniel/dev/addon-operators/coredns/cmd/manager/main.go | |
---- ./cmd/manager/main.go 1970-01-01 01:00:00.000000000 +0100 | |
-+++ /home/daniel/dev/addon-operators/coredns/cmd/manager/main.go 2019-07-01 14:57:36.616341088 +0200 | |
-@@ -0,0 +1,88 @@ | |
-+/* | |
-+ | |
-+Licensed under the Apache License, Version 2.0 (the "License"); | |
-+you may not use this file except in compliance with the License. | |
-+You may obtain a copy of the License at | |
-+ | |
-+ http://www.apache.org/licenses/LICENSE-2.0 | |
-+ | |
-+Unless required by applicable law or agreed to in writing, software | |
-+distributed under the License is distributed on an "AS IS" BASIS, | |
-+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
-+See the License for the specific language governing permissions and | |
-+limitations under the License. | |
-+*/ | |
-+ | |
-+package main | |
-+ | |
-+import ( | |
-+ "flag" | |
-+ "os" | |
-+ | |
-+ _ "k8s.io/client-go/plugin/pkg/client/auth/gcp" | |
-+ "k8s.io/klog" | |
-+ "k8s.io/klog/klogr" | |
-+ "sigs.k8s.io/addon-operators/coredns/pkg/apis" | |
-+ "sigs.k8s.io/addon-operators/coredns/pkg/controller" | |
-+ "sigs.k8s.io/addon-operators/coredns/pkg/webhook" | |
-+ "sigs.k8s.io/controller-runtime/pkg/client/config" | |
-+ "sigs.k8s.io/controller-runtime/pkg/manager" | |
-+ logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" | |
-+ "sigs.k8s.io/controller-runtime/pkg/runtime/signals" | |
-+ "sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/addon" | |
-+) | |
-+ | |
-+func main() { | |
-+ klog.InitFlags(nil) | |
-+ addon.Init() | |
-+ | |
-+ var metricsAddr string | |
-+ flag.StringVar(&metricsAddr, "metrics-addr", ":8080", "The address the metric endpoint binds to.") | |
-+ flag.Parse() | |
-+ logf.SetLogger(klogr.New()) | |
-+ | |
-+ // Get a config to talk to the apiserver | |
-+ klog.Info("setting up client for manager") | |
-+ cfg, err := config.GetConfig() | |
-+ if err != nil { | |
-+ klog.Error(err, "unable to set up client config") | |
-+ os.Exit(1) | |
-+ } | |
-+ | |
-+ // Create a new Cmd to provide shared dependencies and start components | |
-+ klog.Info("setting up manager") | |
-+ mgr, err := manager.New(cfg, manager.Options{MetricsBindAddress: metricsAddr}) | |
-+ if err != nil { | |
-+ klog.Error(err, "unable to set up overall controller manager") | |
-+ os.Exit(1) | |
-+ } | |
-+ | |
-+ klog.Info("Registering Components.") | |
-+ | |
-+ // Setup Scheme for all resources | |
-+ klog.Info("setting up scheme") | |
-+ if err := apis.AddToScheme(mgr.GetScheme()); err != nil { | |
-+ klog.Error(err, "unable add APIs to scheme") | |
-+ os.Exit(1) | |
-+ } | |
-+ | |
-+ // Setup all Controllers | |
-+ klog.Info("Setting up controller") | |
-+ if err := controller.AddToManager(mgr); err != nil { | |
-+ klog.Error(err, "unable to register controllers to the manager") | |
-+ os.Exit(1) | |
-+ } | |
-+ | |
-+ klog.Info("setting up webhooks") | |
-+ if err := webhook.AddToManager(mgr); err != nil { | |
-+ klog.Error(err, "unable to register webhooks to the manager") | |
-+ os.Exit(1) | |
-+ } | |
-+ | |
-+ // Start the Cmd | |
-+ klog.Info("Starting the Cmd.") | |
-+ if err := mgr.Start(signals.SetupSignalHandler()); err != nil { | |
-+ klog.Error(err, "unable to run the manager") | |
-+ os.Exit(1) | |
-+ } | |
-+} | |
-diff -ruN ./config/certmanager/certificate.yaml /home/daniel/dev/addon-operators/coredns/config/certmanager/certificate.yaml | |
---- ./config/certmanager/certificate.yaml 2019-10-14 16:23:40.252832287 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/certmanager/certificate.yaml 1970-01-01 01:00:00.000000000 +0100 | |
-@@ -1,24 +0,0 @@ | |
--# The following manifests contain a self-signed issuer CR and a certificate CR. | |
--# More document can be found at https://docs.cert-manager.io | |
--apiVersion: certmanager.k8s.io/v1alpha1 | |
--kind: Issuer | |
--metadata: | |
-- name: selfsigned-issuer | |
-- namespace: system | |
--spec: | |
-- selfSigned: {} | |
----- | |
--apiVersion: certmanager.k8s.io/v1alpha1 | |
--kind: Certificate | |
--metadata: | |
-- name: serving-cert # this name should match the one appeared in kustomizeconfig.yaml | |
-- namespace: system | |
--spec: | |
-- # $(SERVICE_NAME) and $(SERVICE_NAMESPACE) will be substituted by kustomize | |
-- commonName: $(SERVICE_NAME).$(SERVICE_NAMESPACE).svc | |
-- dnsNames: | |
-- - $(SERVICE_NAME).$(SERVICE_NAMESPACE).svc.cluster.local | |
-- issuerRef: | |
-- kind: Issuer | |
-- name: selfsigned-issuer | |
-- secretName: webhook-server-cert # this secret will not be prefixed, since it's not managed by kustomize | |
-diff -ruN ./config/certmanager/kustomization.yaml /home/daniel/dev/addon-operators/coredns/config/certmanager/kustomization.yaml | |
---- ./config/certmanager/kustomization.yaml 2019-10-14 16:23:40.252832287 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/certmanager/kustomization.yaml 1970-01-01 01:00:00.000000000 +0100 | |
-@@ -1,5 +0,0 @@ | |
--resources: | |
--- certificate.yaml | |
-- | |
--configurations: | |
--- kustomizeconfig.yaml | |
-diff -ruN ./config/certmanager/kustomizeconfig.yaml /home/daniel/dev/addon-operators/coredns/config/certmanager/kustomizeconfig.yaml | |
---- ./config/certmanager/kustomizeconfig.yaml 2019-10-14 16:23:40.252832287 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/certmanager/kustomizeconfig.yaml 1970-01-01 01:00:00.000000000 +0100 | |
-@@ -1,16 +0,0 @@ | |
--# This configuration is for teaching kustomize how to update name ref and var substitution | |
--nameReference: | |
--- kind: Issuer | |
-- group: certmanager.k8s.io | |
-- fieldSpecs: | |
-- - kind: Certificate | |
-- group: certmanager.k8s.io | |
-- path: spec/issuerRef/name | |
-- | |
--varReference: | |
--- kind: Certificate | |
-- group: certmanager.k8s.io | |
-- path: spec/commonName | |
--- kind: Certificate | |
-- group: certmanager.k8s.io | |
-- path: spec/dnsNames | |
-diff -ruN ./config/crd/kustomization.yaml /home/daniel/dev/addon-operators/coredns/config/crd/kustomization.yaml | |
---- ./config/crd/kustomization.yaml 2019-10-14 16:24:08.777447288 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/crd/kustomization.yaml 1970-01-01 01:00:00.000000000 +0100 | |
-@@ -1,21 +0,0 @@ | |
--# This kustomization.yaml is not intended to be run by itself, | |
--# since it depends on service name and namespace that are out of this kustomize package. | |
--# It should be run by config/default | |
--resources: | |
--- bases/addons.k8s.io_coredns.yaml | |
--# +kubebuilder:scaffold:crdkustomizeresource | |
-- | |
--patchesStrategicMerge: | |
--# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix. | |
--# patches here are for enabling the conversion webhook for each CRD | |
--#- patches/webhook_in_coredns.yaml | |
--# +kubebuilder:scaffold:crdkustomizewebhookpatch | |
-- | |
--# [CERTMANAGER] To enable webhook, uncomment all the sections with [CERTMANAGER] prefix. | |
--# patches here are for enabling the CA injection for each CRD | |
--#- patches/cainjection_in_coredns.yaml | |
--# +kubebuilder:scaffold:crdkustomizecainjectionpatch | |
-- | |
--# the following config is for teaching kustomize how to do kustomization for CRDs. | |
--configurations: | |
--- kustomizeconfig.yaml | |
-diff -ruN ./config/crd/kustomizeconfig.yaml /home/daniel/dev/addon-operators/coredns/config/crd/kustomizeconfig.yaml | |
---- ./config/crd/kustomizeconfig.yaml 2019-10-14 16:24:08.777447288 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/crd/kustomizeconfig.yaml 1970-01-01 01:00:00.000000000 +0100 | |
-@@ -1,17 +0,0 @@ | |
--# This file is for teaching kustomize how to substitute name and namespace reference in CRD | |
--nameReference: | |
--- kind: Service | |
-- version: v1 | |
-- fieldSpecs: | |
-- - kind: CustomResourceDefinition | |
-- group: apiextensions.k8s.io | |
-- path: spec/conversion/webhookClientConfig/service/name | |
-- | |
--namespace: | |
--- kind: CustomResourceDefinition | |
-- group: apiextensions.k8s.io | |
-- path: spec/conversion/webhookClientConfig/service/namespace | |
-- create: false | |
-- | |
--varReference: | |
--- path: metadata/annotations | |
-diff -ruN ./config/crd/patches/cainjection_in_coredns.yaml /home/daniel/dev/addon-operators/coredns/config/crd/patches/cainjection_in_coredns.yaml | |
---- ./config/crd/patches/cainjection_in_coredns.yaml 2019-10-14 16:24:08.777447288 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/crd/patches/cainjection_in_coredns.yaml 1970-01-01 01:00:00.000000000 +0100 | |
-@@ -1,8 +0,0 @@ | |
--# The following patch adds a directive for certmanager to inject CA into the CRD | |
--# CRD conversion requires k8s 1.13 or later. | |
--apiVersion: apiextensions.k8s.io/v1beta1 | |
--kind: CustomResourceDefinition | |
--metadata: | |
-- annotations: | |
-- certmanager.k8s.io/inject-ca-from: $(CERTIFICATE_NAMESPACE)/$(CERTIFICATE_NAME) | |
-- name: coredns.addons.k8s.io | |
-diff -ruN ./config/crd/patches/webhook_in_coredns.yaml /home/daniel/dev/addon-operators/coredns/config/crd/patches/webhook_in_coredns.yaml | |
---- ./config/crd/patches/webhook_in_coredns.yaml 2019-10-14 16:24:08.777447288 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/crd/patches/webhook_in_coredns.yaml 1970-01-01 01:00:00.000000000 +0100 | |
-@@ -1,17 +0,0 @@ | |
--# The following patch enables conversion webhook for CRD | |
--# CRD conversion requires k8s 1.13 or later. | |
--apiVersion: apiextensions.k8s.io/v1beta1 | |
--kind: CustomResourceDefinition | |
--metadata: | |
-- name: coredns.addons.k8s.io | |
--spec: | |
-- conversion: | |
-- strategy: Webhook | |
-- webhookClientConfig: | |
-- # this is "\n" used as a placeholder, otherwise it will be rejected by the apiserver for being blank, | |
-- # but we're going to set it later using the cert-manager (or potentially a patch if not using cert-manager) | |
-- caBundle: Cg== | |
-- service: | |
-- namespace: system | |
-- name: webhook-service | |
-- path: /convert | |
-diff -ruN ./config/crds/addons_v1alpha1_coredns.yaml /home/daniel/dev/addon-operators/coredns/config/crds/addons_v1alpha1_coredns.yaml | |
---- ./config/crds/addons_v1alpha1_coredns.yaml 1970-01-01 01:00:00.000000000 +0100 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/crds/addons_v1alpha1_coredns.yaml 2019-07-01 14:57:36.616341088 +0200 | |
-@@ -0,0 +1,61 @@ | |
-+apiVersion: apiextensions.k8s.io/v1beta1 | |
-+kind: CustomResourceDefinition | |
-+metadata: | |
-+ creationTimestamp: null | |
-+ labels: | |
-+ controller-tools.k8s.io: "1.0" | |
-+ name: coredns.addons.k8s.io | |
-+spec: | |
-+ group: addons.k8s.io | |
-+ names: | |
-+ kind: CoreDNS | |
-+ plural: coredns | |
-+ scope: Namespaced | |
-+ validation: | |
-+ openAPIV3Schema: | |
-+ 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: | |
-+ properties: | |
-+ channel: | |
-+ description: 'Channel specifies a channel that can be used to resolve | |
-+ a specific addon, eg: stable It will be ignored if Version is specified' | |
-+ type: string | |
-+ patches: | |
-+ items: | |
-+ type: object | |
-+ type: array | |
-+ version: | |
-+ description: Version specifies the exact addon version to be deployed, | |
-+ eg 1.2.3 It should not be specified if Channel is specified | |
-+ type: string | |
-+ type: object | |
-+ status: | |
-+ properties: | |
-+ errors: | |
-+ items: | |
-+ type: string | |
-+ type: array | |
-+ healthy: | |
-+ type: boolean | |
-+ required: | |
-+ - healthy | |
-+ type: object | |
-+ version: v1alpha1 | |
-+status: | |
-+ acceptedNames: | |
-+ kind: "" | |
-+ plural: "" | |
-+ conditions: [] | |
-+ storedVersions: [] | |
-diff -ruN ./config/default/kustomization.yaml /home/daniel/dev/addon-operators/coredns/config/default/kustomization.yaml | |
---- ./config/default/kustomization.yaml 2019-10-14 16:23:40.252832287 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/default/kustomization.yaml 2019-07-01 14:57:36.616341088 +0200 | |
-@@ -1,27 +1,35 @@ | |
- # Adds namespace to all resources. | |
--namespace: test-system | |
-+namespace: coredns-system | |
- | |
- # Value of this field is prepended to the | |
- # names of all resources, e.g. a deployment named | |
- # "wordpress" becomes "alices-wordpress". | |
- # Note that it should also match with the prefix (text before '-') of the namespace | |
- # field above. | |
--namePrefix: test- | |
-+namePrefix: coredns- | |
- | |
- # Labels to add to all resources and selectors. | |
- #commonLabels: | |
- # someName: someValue | |
- | |
--bases: | |
--- ../crd | |
--- ../rbac | |
--- ../manager | |
--# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix including the one in crd/kustomization.yaml | |
--#- ../webhook | |
--# [CERTMANAGER] To enable cert-manager, uncomment all sections with 'CERTMANAGER'. 'WEBHOOK' components are required. | |
--#- ../certmanager | |
-+# Each entry in this list must resolve to an existing | |
-+# resource definition in YAML. These are the resource | |
-+# files that kustomize reads, modifies and emits as a | |
-+# YAML string, with resources separated by document | |
-+# markers ("---"). | |
-+resources: | |
-+- ../rbac/rbac_role.yaml | |
-+- ../rbac/rbac_role_binding.yaml | |
-+- ../manager/manager.yaml | |
-+ # Comment the following 3 lines if you want to disable | |
-+ # the auth proxy (https://github.com/brancz/kube-rbac-proxy) | |
-+ # which protects your /metrics endpoint. | |
-+- ../rbac/auth_proxy_service.yaml | |
-+- ../rbac/auth_proxy_role.yaml | |
-+- ../rbac/auth_proxy_role_binding.yaml | |
- | |
--patchesStrategicMerge: | |
-+patches: | |
-+- manager_image_patch.yaml | |
- # Protect the /metrics endpoint by putting it behind auth. | |
- # Only one of manager_auth_proxy_patch.yaml and | |
- # manager_prometheus_metrics_patch.yaml should be enabled. | |
-@@ -33,40 +41,9 @@ | |
- # manager_prometheus_metrics_patch.yaml should be enabled. | |
- #- manager_prometheus_metrics_patch.yaml | |
- | |
--# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix including the one in crd/kustomization.yaml | |
--#- manager_webhook_patch.yaml | |
-- | |
--# [CERTMANAGER] To enable cert-manager, uncomment all sections with 'CERTMANAGER'. | |
--# Uncomment 'CERTMANAGER' sections in crd/kustomization.yaml to enable the CA injection in the admission webhooks. | |
--# 'CERTMANAGER' needs to be enabled to use ca injection | |
--#- webhookcainjection_patch.yaml | |
-- | |
--# the following config is for teaching kustomize how to do var substitution | |
- vars: | |
--# [CERTMANAGER] To enable cert-manager, uncomment all sections with 'CERTMANAGER' prefix. | |
--#- name: CERTIFICATE_NAMESPACE # namespace of the certificate CR | |
--# objref: | |
--# kind: Certificate | |
--# group: certmanager.k8s.io | |
--# version: v1alpha1 | |
--# name: serving-cert # this name should match the one in certificate.yaml | |
--# fieldref: | |
--# fieldpath: metadata.namespace | |
--#- name: CERTIFICATE_NAME | |
--# objref: | |
--# kind: Certificate | |
--# group: certmanager.k8s.io | |
--# version: v1alpha1 | |
--# name: serving-cert # this name should match the one in certificate.yaml | |
--#- name: SERVICE_NAMESPACE # namespace of the service | |
--# objref: | |
--# kind: Service | |
--# version: v1 | |
--# name: webhook-service | |
--# fieldref: | |
--# fieldpath: metadata.namespace | |
--#- name: SERVICE_NAME | |
--# objref: | |
--# kind: Service | |
--# version: v1 | |
--# name: webhook-service | |
-+- name: WEBHOOK_SECRET_NAME | |
-+ objref: | |
-+ kind: Secret | |
-+ name: webhook-server-secret | |
-+ apiVersion: v1 | |
-diff -ruN ./config/default/manager_auth_proxy_patch.yaml /home/daniel/dev/addon-operators/coredns/config/default/manager_auth_proxy_patch.yaml | |
---- ./config/default/manager_auth_proxy_patch.yaml 2019-10-14 16:23:40.252832287 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/default/manager_auth_proxy_patch.yaml 2019-07-01 14:57:36.616341088 +0200 | |
-@@ -1,7 +1,7 @@ | |
- # This patch inject a sidecar container which is a HTTP proxy for the controller manager, | |
- # it performs RBAC authorization against the Kubernetes API using SubjectAccessReviews. | |
- apiVersion: apps/v1 | |
--kind: Deployment | |
-+kind: StatefulSet | |
- metadata: | |
- name: controller-manager | |
- namespace: system | |
-@@ -10,7 +10,7 @@ | |
- spec: | |
- containers: | |
- - name: kube-rbac-proxy | |
-- image: gcr.io/kubebuilder/kube-rbac-proxy:v0.4.1 | |
-+ image: gcr.io/kubebuilder/kube-rbac-proxy:v0.4.0 | |
- args: | |
- - "--secure-listen-address=0.0.0.0:8443" | |
- - "--upstream=http://127.0.0.1:8080/" | |
-@@ -22,4 +22,3 @@ | |
- - name: manager | |
- args: | |
- - "--metrics-addr=127.0.0.1:8080" | |
-- - "--enable-leader-election" | |
-diff -ruN ./config/default/manager_image_patch.yaml /home/daniel/dev/addon-operators/coredns/config/default/manager_image_patch.yaml | |
---- ./config/default/manager_image_patch.yaml 1970-01-01 01:00:00.000000000 +0100 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/default/manager_image_patch.yaml 2019-07-01 14:57:36.616341088 +0200 | |
-@@ -0,0 +1,12 @@ | |
-+apiVersion: apps/v1 | |
-+kind: StatefulSet | |
-+metadata: | |
-+ name: controller-manager | |
-+ namespace: system | |
-+spec: | |
-+ template: | |
-+ spec: | |
-+ containers: | |
-+ # Change the value of image field below to your controller image URL | |
-+ - image: IMAGE_URL | |
-+ name: manager | |
-diff -ruN ./config/default/manager_prometheus_metrics_patch.yaml /home/daniel/dev/addon-operators/coredns/config/default/manager_prometheus_metrics_patch.yaml | |
---- ./config/default/manager_prometheus_metrics_patch.yaml 2019-10-14 16:23:40.252832287 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/default/manager_prometheus_metrics_patch.yaml 2019-07-01 14:57:36.620341144 +0200 | |
-@@ -1,6 +1,6 @@ | |
- # This patch enables Prometheus scraping for the manager pod. | |
- apiVersion: apps/v1 | |
--kind: Deployment | |
-+kind: StatefulSet | |
- metadata: | |
- name: controller-manager | |
- namespace: system | |
-diff -ruN ./config/default/manager_webhook_patch.yaml /home/daniel/dev/addon-operators/coredns/config/default/manager_webhook_patch.yaml | |
---- ./config/default/manager_webhook_patch.yaml 2019-10-14 16:23:40.252832287 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/default/manager_webhook_patch.yaml 1970-01-01 01:00:00.000000000 +0100 | |
-@@ -1,23 +0,0 @@ | |
--apiVersion: apps/v1 | |
--kind: Deployment | |
--metadata: | |
-- name: controller-manager | |
-- namespace: system | |
--spec: | |
-- template: | |
-- spec: | |
-- containers: | |
-- - name: manager | |
-- ports: | |
-- - containerPort: 9443 | |
-- name: webhook-server | |
-- protocol: TCP | |
-- volumeMounts: | |
-- - mountPath: /tmp/k8s-webhook-server/serving-certs | |
-- name: cert | |
-- readOnly: true | |
-- volumes: | |
-- - name: cert | |
-- secret: | |
-- defaultMode: 420 | |
-- secretName: webhook-server-cert | |
-diff -ruN ./config/default/webhookcainjection_patch.yaml /home/daniel/dev/addon-operators/coredns/config/default/webhookcainjection_patch.yaml | |
---- ./config/default/webhookcainjection_patch.yaml 2019-10-14 16:23:40.252832287 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/default/webhookcainjection_patch.yaml 1970-01-01 01:00:00.000000000 +0100 | |
-@@ -1,15 +0,0 @@ | |
--# This patch add annotation to admission webhook config and | |
--# the variables $(CERTIFICATE_NAMESPACE) and $(CERTIFICATE_NAME) will be substituted by kustomize. | |
--apiVersion: admissionregistration.k8s.io/v1beta1 | |
--kind: MutatingWebhookConfiguration | |
--metadata: | |
-- name: mutating-webhook-configuration | |
-- annotations: | |
-- certmanager.k8s.io/inject-ca-from: $(CERTIFICATE_NAMESPACE)/$(CERTIFICATE_NAME) | |
----- | |
--apiVersion: admissionregistration.k8s.io/v1beta1 | |
--kind: ValidatingWebhookConfiguration | |
--metadata: | |
-- name: validating-webhook-configuration | |
-- annotations: | |
-- certmanager.k8s.io/inject-ca-from: $(CERTIFICATE_NAMESPACE)/$(CERTIFICATE_NAME) | |
-diff -ruN ./config/manager/kustomization.yaml /home/daniel/dev/addon-operators/coredns/config/manager/kustomization.yaml | |
---- ./config/manager/kustomization.yaml 2019-10-14 16:23:40.252832287 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/manager/kustomization.yaml 1970-01-01 01:00:00.000000000 +0100 | |
-@@ -1,2 +0,0 @@ | |
--resources: | |
--- manager.yaml | |
-diff -ruN ./config/manager/manager.yaml /home/daniel/dev/addon-operators/coredns/config/manager/manager.yaml | |
---- ./config/manager/manager.yaml 2019-10-14 16:23:40.252832287 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/manager/manager.yaml 2019-07-01 14:57:36.620341144 +0200 | |
-@@ -3,32 +3,57 @@ | |
- metadata: | |
- labels: | |
- control-plane: controller-manager | |
-+ controller-tools.k8s.io: "1.0" | |
- name: system | |
- --- | |
-+apiVersion: v1 | |
-+kind: Service | |
-+metadata: | |
-+ name: controller-manager-service | |
-+ namespace: system | |
-+ labels: | |
-+ control-plane: controller-manager | |
-+ controller-tools.k8s.io: "1.0" | |
-+spec: | |
-+ selector: | |
-+ control-plane: controller-manager | |
-+ controller-tools.k8s.io: "1.0" | |
-+ ports: | |
-+ - port: 443 | |
-+--- | |
- apiVersion: apps/v1 | |
--kind: Deployment | |
-+kind: StatefulSet | |
- metadata: | |
- name: controller-manager | |
- namespace: system | |
- labels: | |
- control-plane: controller-manager | |
-+ controller-tools.k8s.io: "1.0" | |
- spec: | |
- selector: | |
- matchLabels: | |
- control-plane: controller-manager | |
-- replicas: 1 | |
-+ controller-tools.k8s.io: "1.0" | |
-+ serviceName: controller-manager-service | |
- template: | |
- metadata: | |
- labels: | |
- control-plane: controller-manager | |
-+ controller-tools.k8s.io: "1.0" | |
- spec: | |
- containers: | |
- - command: | |
- - /manager | |
-- args: | |
-- - --enable-leader-election | |
- image: controller:latest | |
-+ imagePullPolicy: Always | |
- name: manager | |
-+ env: | |
-+ - name: POD_NAMESPACE | |
-+ valueFrom: | |
-+ fieldRef: | |
-+ fieldPath: metadata.namespace | |
-+ - name: SECRET_NAME | |
-+ value: $(WEBHOOK_SECRET_NAME) | |
- resources: | |
- limits: | |
- cpu: 100m | |
-@@ -36,4 +61,23 @@ | |
- requests: | |
- cpu: 100m | |
- memory: 20Mi | |
-+ ports: | |
-+ - containerPort: 9876 | |
-+ name: webhook-server | |
-+ protocol: TCP | |
-+ volumeMounts: | |
-+ - mountPath: /tmp/cert | |
-+ name: cert | |
-+ readOnly: true | |
- terminationGracePeriodSeconds: 10 | |
-+ volumes: | |
-+ - name: cert | |
-+ secret: | |
-+ defaultMode: 420 | |
-+ secretName: webhook-server-secret | |
-+--- | |
-+apiVersion: v1 | |
-+kind: Secret | |
-+metadata: | |
-+ name: webhook-server-secret | |
-+ namespace: system | |
-diff -ruN ./config/rbac/auth_proxy_service.yaml /home/daniel/dev/addon-operators/coredns/config/rbac/auth_proxy_service.yaml | |
---- ./config/rbac/auth_proxy_service.yaml 2019-10-14 16:23:40.252832287 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/rbac/auth_proxy_service.yaml 2019-07-01 14:57:36.620341144 +0200 | |
-@@ -7,6 +7,7 @@ | |
- prometheus.io/scrape: "true" | |
- labels: | |
- control-plane: controller-manager | |
-+ controller-tools.k8s.io: "1.0" | |
- name: controller-manager-metrics-service | |
- namespace: system | |
- spec: | |
-@@ -16,3 +17,4 @@ | |
- targetPort: https | |
- selector: | |
- control-plane: controller-manager | |
-+ controller-tools.k8s.io: "1.0" | |
-diff -ruN ./config/rbac/kustomization.yaml /home/daniel/dev/addon-operators/coredns/config/rbac/kustomization.yaml | |
---- ./config/rbac/kustomization.yaml 2019-10-14 16:23:40.252832287 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/rbac/kustomization.yaml 1970-01-01 01:00:00.000000000 +0100 | |
-@@ -1,11 +0,0 @@ | |
--resources: | |
--- role.yaml | |
--- role_binding.yaml | |
--- leader_election_role.yaml | |
--- leader_election_role_binding.yaml | |
--# Comment the following 3 lines if you want to disable | |
--# the auth proxy (https://github.com/brancz/kube-rbac-proxy) | |
--# which protects your /metrics endpoint. | |
--- auth_proxy_service.yaml | |
--- auth_proxy_role.yaml | |
--- auth_proxy_role_binding.yaml | |
-diff -ruN ./config/rbac/leader_election_role_binding.yaml /home/daniel/dev/addon-operators/coredns/config/rbac/leader_election_role_binding.yaml | |
---- ./config/rbac/leader_election_role_binding.yaml 2019-10-14 16:23:40.252832287 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/rbac/leader_election_role_binding.yaml 1970-01-01 01:00:00.000000000 +0100 | |
-@@ -1,12 +0,0 @@ | |
--apiVersion: rbac.authorization.k8s.io/v1 | |
--kind: RoleBinding | |
--metadata: | |
-- name: leader-election-rolebinding | |
--roleRef: | |
-- apiGroup: rbac.authorization.k8s.io | |
-- kind: Role | |
-- name: leader-election-role | |
--subjects: | |
--- kind: ServiceAccount | |
-- name: default | |
-- namespace: system | |
-diff -ruN ./config/rbac/leader_election_role.yaml /home/daniel/dev/addon-operators/coredns/config/rbac/leader_election_role.yaml | |
---- ./config/rbac/leader_election_role.yaml 2019-10-14 16:23:40.252832287 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/rbac/leader_election_role.yaml 1970-01-01 01:00:00.000000000 +0100 | |
-@@ -1,32 +0,0 @@ | |
--# permissions to do leader election. | |
--apiVersion: rbac.authorization.k8s.io/v1 | |
--kind: Role | |
--metadata: | |
-- name: leader-election-role | |
--rules: | |
--- apiGroups: | |
-- - "" | |
-- resources: | |
-- - configmaps | |
-- verbs: | |
-- - get | |
-- - list | |
-- - watch | |
-- - create | |
-- - update | |
-- - patch | |
-- - delete | |
--- apiGroups: | |
-- - "" | |
-- resources: | |
-- - configmaps/status | |
-- verbs: | |
-- - get | |
-- - update | |
-- - patch | |
--- apiGroups: | |
-- - "" | |
-- resources: | |
-- - events | |
-- verbs: | |
-- - create | |
-diff -ruN ./config/rbac/manager_role_binding.yaml /home/daniel/dev/addon-operators/coredns/config/rbac/manager_role_binding.yaml | |
---- ./config/rbac/manager_role_binding.yaml 1970-01-01 01:00:00.000000000 +0100 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/rbac/manager_role_binding.yaml 2019-07-01 14:57:36.620341144 +0200 | |
-@@ -0,0 +1,12 @@ | |
-+apiVersion: rbac.authorization.k8s.io/v1 | |
-+kind: ClusterRoleBinding | |
-+metadata: | |
-+ creationTimestamp: null | |
-+ name: manager-rolebinding | |
-+roleRef: | |
-+ apiGroup: rbac.authorization.k8s.io | |
-+ kind: ClusterRole | |
-+ name: manager-role | |
-+subjects: | |
-+- kind: ServiceAccount | |
-+ name: "" | |
-diff -ruN ./config/rbac/manager_role.yaml /home/daniel/dev/addon-operators/coredns/config/rbac/manager_role.yaml | |
---- ./config/rbac/manager_role.yaml 1970-01-01 01:00:00.000000000 +0100 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/rbac/manager_role.yaml 2019-07-01 14:57:36.620341144 +0200 | |
-@@ -0,0 +1,116 @@ | |
-+apiVersion: rbac.authorization.k8s.io/v1 | |
-+kind: ClusterRole | |
-+metadata: | |
-+ creationTimestamp: null | |
-+ name: manager-role | |
-+rules: | |
-+- apiGroups: | |
-+ - addons.k8s.io | |
-+ resources: | |
-+ - coredns | |
-+ verbs: | |
-+ - get | |
-+ - list | |
-+ - watch | |
-+ - create | |
-+ - update | |
-+ - patch | |
-+ - delete | |
-+- apiGroups: | |
-+ - addons.k8s.io | |
-+ resources: | |
-+ - coredns/status | |
-+ verbs: | |
-+ - get | |
-+ - update | |
-+ - patch | |
-+- apiGroups: | |
-+ - apps | |
-+ - extensions | |
-+ resources: | |
-+ - deployments | |
-+ verbs: | |
-+ - get | |
-+ - list | |
-+ - watch | |
-+ - create | |
-+ - update | |
-+ - delete | |
-+ - patch | |
-+- apiGroups: | |
-+ - "" | |
-+ resources: | |
-+ - configmaps | |
-+ - serviceaccounts | |
-+ - services | |
-+ verbs: | |
-+ - get | |
-+ - list | |
-+ - watch | |
-+ - create | |
-+ - update | |
-+ - delete | |
-+ - patch | |
-+- apiGroups: | |
-+ - rbac.authorization.k8s.io | |
-+ resources: | |
-+ - roles | |
-+ - rolebindings | |
-+ - clusterroles | |
-+ - clusterrolebindings | |
-+ verbs: | |
-+ - get | |
-+ - list | |
-+ - watch | |
-+ - create | |
-+ - update | |
-+ - delete | |
-+ - patch | |
-+- apiGroups: | |
-+ - "" | |
-+ resources: | |
-+ - endpoints | |
-+ - namespaces | |
-+ - nodes | |
-+ - pods | |
-+ verbs: | |
-+ - get | |
-+ - list | |
-+ - watch | |
-+- apiGroups: | |
-+ - admissionregistration.k8s.io | |
-+ resources: | |
-+ - mutatingwebhookconfigurations | |
-+ - validatingwebhookconfigurations | |
-+ verbs: | |
-+ - get | |
-+ - list | |
-+ - watch | |
-+ - create | |
-+ - update | |
-+ - patch | |
-+ - delete | |
-+- apiGroups: | |
-+ - "" | |
-+ resources: | |
-+ - secrets | |
-+ verbs: | |
-+ - get | |
-+ - list | |
-+ - watch | |
-+ - create | |
-+ - update | |
-+ - patch | |
-+ - delete | |
-+- apiGroups: | |
-+ - "" | |
-+ resources: | |
-+ - services | |
-+ verbs: | |
-+ - get | |
-+ - list | |
-+ - watch | |
-+ - create | |
-+ - update | |
-+ - patch | |
-+ - delete | |
-diff -ruN ./config/rbac/role_binding.yaml /home/daniel/dev/addon-operators/coredns/config/rbac/role_binding.yaml | |
---- ./config/rbac/role_binding.yaml 2019-10-14 16:23:40.252832287 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/rbac/role_binding.yaml 1970-01-01 01:00:00.000000000 +0100 | |
-@@ -1,12 +0,0 @@ | |
--apiVersion: rbac.authorization.k8s.io/v1 | |
--kind: ClusterRoleBinding | |
--metadata: | |
-- name: manager-rolebinding | |
--roleRef: | |
-- apiGroup: rbac.authorization.k8s.io | |
-- kind: ClusterRole | |
-- name: manager-role | |
--subjects: | |
--- kind: ServiceAccount | |
-- name: default | |
-- namespace: system | |
-diff -ruN ./config/samples/addons_v1alpha1_coredns.yaml /home/daniel/dev/addon-operators/coredns/config/samples/addons_v1alpha1_coredns.yaml | |
---- ./config/samples/addons_v1alpha1_coredns.yaml 2019-10-14 16:24:08.777447288 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/samples/addons_v1alpha1_coredns.yaml 2019-07-01 14:57:36.620341144 +0200 | |
-@@ -1,7 +1,15 @@ | |
- apiVersion: addons.k8s.io/v1alpha1 | |
- kind: CoreDNS | |
- metadata: | |
-- name: coredns-sample | |
-+ name: default | |
-+ namespace: kube-system | |
- spec: | |
-- # Add fields here | |
-- foo: bar | |
-+ channel: stable | |
-+ patches: | |
-+ - apiVersion: apps/v1 | |
-+ kind: Deployment | |
-+ metadata: | |
-+ name: coredns | |
-+ namespace: kube-system | |
-+ labels: | |
-+ foo: bar | |
-diff -ruN ./config/webhook/kustomization.yaml /home/daniel/dev/addon-operators/coredns/config/webhook/kustomization.yaml | |
---- ./config/webhook/kustomization.yaml 2019-10-14 16:23:40.252832287 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/webhook/kustomization.yaml 1970-01-01 01:00:00.000000000 +0100 | |
-@@ -1,6 +0,0 @@ | |
--resources: | |
--- manifests.yaml | |
--- service.yaml | |
-- | |
--configurations: | |
--- kustomizeconfig.yaml | |
-diff -ruN ./config/webhook/kustomizeconfig.yaml /home/daniel/dev/addon-operators/coredns/config/webhook/kustomizeconfig.yaml | |
---- ./config/webhook/kustomizeconfig.yaml 2019-10-14 16:23:40.252832287 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/webhook/kustomizeconfig.yaml 1970-01-01 01:00:00.000000000 +0100 | |
-@@ -1,25 +0,0 @@ | |
--# the following config is for teaching kustomize where to look at when substituting vars. | |
--# It requires kustomize v2.1.0 or newer to work properly. | |
--nameReference: | |
--- kind: Service | |
-- version: v1 | |
-- fieldSpecs: | |
-- - kind: MutatingWebhookConfiguration | |
-- group: admissionregistration.k8s.io | |
-- path: webhooks/clientConfig/service/name | |
-- - kind: ValidatingWebhookConfiguration | |
-- group: admissionregistration.k8s.io | |
-- path: webhooks/clientConfig/service/name | |
-- | |
--namespace: | |
--- kind: MutatingWebhookConfiguration | |
-- group: admissionregistration.k8s.io | |
-- path: webhooks/clientConfig/service/namespace | |
-- create: true | |
--- kind: ValidatingWebhookConfiguration | |
-- group: admissionregistration.k8s.io | |
-- path: webhooks/clientConfig/service/namespace | |
-- create: true | |
-- | |
--varReference: | |
--- path: metadata/annotations | |
-diff -ruN ./config/webhook/service.yaml /home/daniel/dev/addon-operators/coredns/config/webhook/service.yaml | |
---- ./config/webhook/service.yaml 2019-10-14 16:23:40.252832287 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/config/webhook/service.yaml 1970-01-01 01:00:00.000000000 +0100 | |
-@@ -1,12 +0,0 @@ | |
-- | |
--apiVersion: v1 | |
--kind: Service | |
--metadata: | |
-- name: webhook-service | |
-- namespace: system | |
--spec: | |
-- ports: | |
-- - port: 443 | |
-- targetPort: 9443 | |
-- selector: | |
-- control-plane: controller-manager | |
-diff -ruN ./controllers/coredns_controller.go /home/daniel/dev/addon-operators/coredns/controllers/coredns_controller.go | |
---- ./controllers/coredns_controller.go 2019-10-14 16:24:09.149459210 +0200 | |
-+++ /home/daniel/dev/addon-operators/coredns/controllers/coredns_controller.go 1970-01-01 01:00:00.000000000 +0100 | |
-@@ -1,73 +0,0 @@ | |
-- | |
-- | |
--package controllers | |
-- | |
--import ( | |
-- "sigs.k8s.io/controller-runtime/pkg/controller" | |
-- "sigs.k8s.io/controller-runtime/pkg/handler" | |
-- "sigs.k8s.io/controller-runtime/pkg/reconcile" | |
-- "sigs.k8s.io/controller-runtime/pkg/source" | |
-- "sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/addon" | |
-- "sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/addon/pkg/status" | |
-- "sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/declarative" | |
-- | |
-- "github.com/go-logr/logr" | |
-- ctrl "sigs.k8s.io/controller-runtime" | |
-- "sigs.k8s.io/controller-runtime/pkg/client" | |
-- | |
-- api "github.com/kubernetes-sigs/test/api/v1alpha1" | |
--) | |
-- | |
--var _ reconcile.Reconciler = &CoreDNSReconciler{} | |
-- | |
--// CoreDNSReconciler reconciles a CoreDNS object | |
--type CoreDNSReconciler struct { | |
-- client.Client | |
-- Log logr.Logger | |
-- | |
-- declarative.Reconciler | |
--} | |
-- | |
--// +kubebuilder:rbac:groups=addons.k8s.io,resources=coredns,verbs=get;list;watch;create;update;patch;delete | |
--// +kubebuilder:rbac:groups=addons.k8s.io,resources=coredns/status,verbs=get;update;patch | |
-- | |
--func (r *CoreDNSReconciler) SetupWithManager(mgr ctrl.Manager) error { | |
-- addon.Init() | |
-- | |
-- labels := map[string]string{ | |
-- "k8s-app": "coredns", | |
-- } | |
-- | |
-- watchLabels := declarative.SourceLabel(mgr.GetScheme()) | |
-- | |
-- if err := r.Reconciler.Init(mgr, &api.CoreDNS{}, | |
-- declarative.WithObjectTransform(declarative.AddLabels(labels)), | |
-- declarative.WithOwner(declarative.SourceAsOwner), | |
-- declarative.WithLabels(watchLabels), | |
-- declarative.WithStatus(status.NewBasic(mgr.GetClient())), | |
-- // TODO: add an application to your manifest: declarative.WithObjectTransform(addon.TransformApplicationFromStatus), | |
-- // TODO: add an application to your manifest: declarative.WithManagedApplication(watchLabels), | |
-- declarative.WithObjectTransform(addon.ApplyPatches), | |
-- ); err != nil { | |
-- return err | |
-- } | |
-- | |
-- c, err := controller.New("coredns-controller", mgr, controller.Options{Reconciler: r}) | |
-- if err != nil { | |
-- return err | |
-- } | |
-- | |
-- // Watch for changes to CoreDNS | |
-- err = c.Watch(&source.Kind{Type: &api.CoreDNS{}}, &handler.EnqueueRequestForObject{}) | |
-- if err != nil { | |
-- return err | |
-- } | |
-- | |
-- // Watch for changes to deployed objects | |
-- _, err = declarative.WatchAll(mgr.GetConfig(), c, r, watchLabels) | |
-- if err != nil { | |
-- return err | |
-- } | |
-- | |
-- return nil | |
--} | |
diff -ruN ./Dockerfile /home/daniel/dev/addon-operators/coredns/Dockerfile | |
--- ./Dockerfile 2019-10-14 16:23:40.252832287 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/Dockerfile 1970-01-01 01:00:00.000000000 +0100 | |
@@ -1,27 +0,0 @@ | |
-# Build the manager binary | |
-FROM golang:1.12.5 as builder | |
- | |
-WORKDIR /workspace | |
-# Copy the Go Modules manifests | |
-COPY go.mod go.mod | |
-COPY go.sum go.sum | |
-# cache deps before building and copying source so that we don't need to re-download as much | |
-# and so that source changes don't invalidate our downloaded layer | |
-RUN go mod download | |
- | |
-# Copy the go source | |
-COPY main.go main.go | |
-COPY api/ api/ | |
-COPY controllers/ controllers/ | |
- | |
-# Build | |
-RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GO111MODULE=on go build -a -o manager main.go | |
- | |
-# Use distroless as minimal base image to package the manager binary | |
-# Refer to https://github.com/GoogleContainerTools/distroless for more details | |
-FROM gcr.io/distroless/static:nonroot | |
-WORKDIR / | |
-COPY --from=builder /workspace/manager . | |
-USER nonroot:nonroot | |
- | |
-ENTRYPOINT ["/manager"] | |
diff -ruN ./.gitignore /home/daniel/dev/addon-operators/coredns/.gitignore | |
--- ./.gitignore 2019-10-14 16:23:40.252832287 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/.gitignore 2019-07-01 14:57:36.616341088 +0200 | |
@@ -1,3 +1,4 @@ | |
+.build/ | |
# Binaries for programs and plugins | |
*.exe | |
diff -ruN ./go.mod /home/daniel/dev/addon-operators/coredns/go.mod | |
--- ./go.mod 2019-10-14 16:23:40.252832287 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/go.mod 2019-07-01 14:57:36.620341144 +0200 | |
@@ -1,8 +1,100 @@ | |
- | |
-module github.com/kubernetes-sigs/test | |
+module sigs.k8s.io/addon-operators/coredns | |
go 1.12 | |
require ( | |
- sigs.k8s.io/controller-runtime v0.2.2 | |
+ github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 // indirect | |
+ github.com/BurntSushi/toml v0.3.0 // indirect | |
+ github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46 // indirect | |
+ github.com/appscode/jsonpatch v0.0.0-20190108182946-7c0e3b262f30 // indirect | |
+ github.com/coreos/bbolt v1.3.1-coreos.6 // indirect | |
+ github.com/coreos/etcd v3.3.10+incompatible // indirect | |
+ github.com/coreos/go-oidc v0.0.0-20180117170138-065b426bd416 // indirect | |
+ github.com/coreos/go-semver v0.0.0-20180108230905-e214231b295a // indirect | |
+ github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7 // indirect | |
+ github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea // indirect | |
+ github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0 // indirect | |
+ github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96 // indirect | |
+ github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e // indirect | |
+ github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633 // indirect | |
+ github.com/ghodss/yaml v1.0.0 // indirect | |
+ github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8 // indirect | |
+ github.com/go-logr/logr v0.1.0 // indirect | |
+ github.com/go-logr/zapr v0.1.1 // indirect | |
+ github.com/go-openapi/analysis v0.17.2 // indirect | |
+ github.com/go-openapi/errors v0.17.2 // indirect | |
+ github.com/go-openapi/jsonpointer v0.19.0 // indirect | |
+ github.com/go-openapi/jsonreference v0.19.0 // indirect | |
+ github.com/go-openapi/loads v0.17.2 // indirect | |
+ github.com/go-openapi/runtime v0.17.2 // indirect | |
+ github.com/go-openapi/spec v0.17.2 // indirect | |
+ github.com/go-openapi/swag v0.17.2 // indirect | |
+ github.com/go-openapi/validate v0.18.0 // indirect | |
+ github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b // indirect | |
+ github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903 // indirect | |
+ github.com/google/btree v1.0.0 // indirect | |
+ github.com/google/go-cmp v0.2.0 // indirect | |
+ github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf // indirect | |
+ github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d // indirect | |
+ github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c // indirect | |
+ github.com/gregjones/httpcache v0.0.0-20190212212710-3befbb6ad0cc // indirect | |
+ github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79 // indirect | |
+ github.com/grpc-ecosystem/go-grpc-prometheus v0.0.0-20170330212424-2500245aa611 // indirect | |
+ github.com/grpc-ecosystem/grpc-gateway v1.3.0 // indirect | |
+ github.com/hashicorp/golang-lru v0.5.0 // indirect | |
+ github.com/imdario/mergo v0.3.7 // indirect | |
+ github.com/inconshreveable/mousetrap v1.0.0 // indirect | |
+ github.com/jonboulle/clockwork v0.0.0-20141017032234-72f9bd7c4e0c // indirect | |
+ github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be // indirect | |
+ github.com/markbates/inflect v1.0.4 // indirect | |
+ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect | |
+ github.com/modern-go/reflect2 v1.0.1 // indirect | |
+ github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d // indirect | |
+ github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect | |
+ github.com/natefinch/lumberjack v2.0.0+incompatible // indirect | |
+ github.com/onsi/gomega v0.0.0-20190113212917-5533ce8a0da3 // indirect | |
+ github.com/peterbourgon/diskv v2.0.1+incompatible // indirect | |
+ github.com/philhofer/fwd v1.0.0 // indirect | |
+ github.com/pkg/errors v0.8.0 // indirect | |
+ github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021 // indirect | |
+ github.com/pquerna/ffjson v0.0.0-20180717144149-af8b230fcd20 // indirect | |
+ github.com/prometheus/client_golang v0.9.2 // indirect | |
+ github.com/sirupsen/logrus v1.2.0 // indirect | |
+ github.com/soheilhy/cmux v0.1.3 // indirect | |
+ github.com/spf13/afero v1.2.2 // indirect | |
+ github.com/spf13/cobra v0.0.0-20180319062004-c439c4fa0937 // indirect | |
+ github.com/tinylib/msgp v1.1.0 // indirect | |
+ github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8 // indirect | |
+ github.com/ugorji/go v0.0.0-20171019201919-bdcc60b419d1 // indirect | |
+ github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18 // indirect | |
+ go.uber.org/atomic v1.3.2 // indirect | |
+ go.uber.org/multierr v1.1.0 // indirect | |
+ go.uber.org/zap v1.9.1 // indirect | |
+ golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734 // indirect | |
+ golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a // indirect | |
+ golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db // indirect | |
+ golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 // indirect | |
+ google.golang.org/appengine v1.5.0 // indirect | |
+ google.golang.org/genproto v0.0.0-20170731182057-09f6ed296fc6 // indirect | |
+ google.golang.org/grpc v1.13.0 // indirect | |
+ gopkg.in/inf.v0 v0.9.0 // indirect | |
+ gopkg.in/natefinch/lumberjack.v2 v2.0.0-20150622162204-20b71e5b60d7 // indirect | |
+ gopkg.in/square/go-jose.v2 v2.0.0-20180411045311-89060dee6a84 // indirect | |
+ gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0 // indirect | |
+ gotest.tools v2.2.0+incompatible // indirect | |
+ k8s.io/api v0.0.0-20190222213804-5cb15d344471 | |
+ k8s.io/apiextensions-apiserver v0.0.0-20190325193600-475668423e9f // indirect | |
+ k8s.io/apimachinery v0.0.0-20190221213512-86fb29eff628 | |
+ k8s.io/apiserver v0.0.0-20190319190228-a4358799e4fe // indirect | |
+ k8s.io/client-go v10.0.0+incompatible | |
+ k8s.io/code-generator v0.0.0-20190419212335-ff26e7842f9d | |
+ k8s.io/klog v0.3.0 | |
+ k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30 // indirect | |
+ k8s.io/utils v0.0.0-20190308190857-21c4ce38f2a7 // indirect | |
+ sigs.k8s.io/controller-runtime v0.1.10 | |
+ sigs.k8s.io/controller-tools v0.1.10 | |
+ sigs.k8s.io/kubebuilder-declarative-pattern v0.0.0-20190624171758-3bfb5869c8b7 | |
+ sigs.k8s.io/structured-merge-diff v0.0.0-20190302045857-e85c7b244fd2 // indirect | |
+ sigs.k8s.io/testing_frameworks v0.1.1 // indirect | |
+ sigs.k8s.io/yaml v1.1.0 // indirect | |
) | |
diff -ruN ./go.sum /home/daniel/dev/addon-operators/coredns/go.sum | |
--- ./go.sum 1970-01-01 01:00:00.000000000 +0100 | |
+++ /home/daniel/dev/addon-operators/coredns/go.sum 2019-07-01 14:57:36.620341144 +0200 | |
@@ -0,0 +1,283 @@ | |
+cloud.google.com/go v0.34.0 h1:eOI3/cP2VTU6uZLDYAoic+eyzzB9YyGmJ7eIjl8rOPg= | |
+cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= | |
+github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= | |
+github.com/Azure/go-autorest v11.1.2+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= | |
+github.com/BurntSushi/toml v0.3.0/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= | |
+github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= | |
+github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= | |
+github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= | |
+github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= | |
+github.com/appscode/jsonpatch v0.0.0-20190108182946-7c0e3b262f30 h1:Kn3rqvbUFqSepE2OqVu0Pn1CbDw9IuMlONapol0zuwk= | |
+github.com/appscode/jsonpatch v0.0.0-20190108182946-7c0e3b262f30/go.mod h1:4AJxUpXUhv4N+ziTvIcWWXgeorXpxPZOfk9HdEVr96M= | |
+github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= | |
+github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0= | |
+github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= | |
+github.com/coreos/bbolt v1.3.1-coreos.6/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= | |
+github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= | |
+github.com/coreos/go-oidc v0.0.0-20180117170138-065b426bd416/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= | |
+github.com/coreos/go-semver v0.0.0-20180108230905-e214231b295a/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= | |
+github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= | |
+github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= | |
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | |
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | |
+github.com/dgrijalva/jwt-go v0.0.0-20160705203006-01aeca54ebda/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= | |
+github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= | |
+github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= | |
+github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= | |
+github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= | |
+github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= | |
+github.com/evanphx/json-patch v0.0.0-20190203023257-5858425f7550/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= | |
+github.com/evanphx/json-patch v4.0.0+incompatible h1:xregGRMLBeuRcwiOTHRCsPPuzCQlqhxUPbqdw+zNkLc= | |
+github.com/evanphx/json-patch v4.0.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= | |
+github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= | |
+github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= | |
+github.com/ghodss/yaml v0.0.0-20180820084758-c7ce16629ff4/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= | |
+github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= | |
+github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= | |
+github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= | |
+github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= | |
+github.com/go-logr/logr v0.1.0 h1:M1Tv3VzNlEHg6uyACnRdtrploV2P7wZqH8BoQMtz0cg= | |
+github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= | |
+github.com/go-logr/zapr v0.1.1 h1:qXBXPDdNncunGs7XeEpsJt8wCjYBygluzfdLO0G5baE= | |
+github.com/go-logr/zapr v0.1.1/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= | |
+github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= | |
+github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= | |
+github.com/go-openapi/analysis v0.17.2/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= | |
+github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= | |
+github.com/go-openapi/errors v0.17.2/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= | |
+github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= | |
+github.com/go-openapi/jsonpointer v0.19.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= | |
+github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= | |
+github.com/go-openapi/jsonreference v0.19.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= | |
+github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= | |
+github.com/go-openapi/loads v0.17.2/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= | |
+github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= | |
+github.com/go-openapi/runtime v0.17.2/go.mod h1:QO936ZXeisByFmZEO1IS1Dqhtf4QV1sYYFtIq6Ld86Q= | |
+github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= | |
+github.com/go-openapi/spec v0.17.2/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= | |
+github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= | |
+github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= | |
+github.com/go-openapi/swag v0.17.2/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= | |
+github.com/go-openapi/validate v0.17.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= | |
+github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= | |
+github.com/gobuffalo/envy v1.6.5 h1:X3is06x7v0nW2xiy2yFbbIjwHz57CD6z6MkvqULTCm8= | |
+github.com/gobuffalo/envy v1.6.5/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= | |
+github.com/gogo/protobuf v0.0.0-20171007142547-342cbe0a0415 h1:WSBJMqJbLxsn+bTCPyPYZfqHdJmc8MK4wrBjMft6BAM= | |
+github.com/gogo/protobuf v0.0.0-20171007142547-342cbe0a0415/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= | |
+github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= | |
+github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903 h1:LbsanbbD6LieFkXbj9YNNBupiGHJgFeLpO0j0Fza1h8= | |
+github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= | |
+github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= | |
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= | |
+github.com/google/btree v0.0.0-20160524151835-7d79101e329e/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= | |
+github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= | |
+github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= | |
+github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= | |
+github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf h1:+RRA9JqSOZFfKrOeqr2z77+8R2RKyh8PG66dcu1V0ck= | |
+github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= | |
+github.com/google/uuid v1.0.0 h1:b4Gk+7WdP/d3HZH8EJsZpvV7EtDOgaZLtnaNGIu1adA= | |
+github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | |
+github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d h1:7XGaL1e6bYS1yIonGp9761ExpPPV1ui0SAC59Yube9k= | |
+github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= | |
+github.com/gophercloud/gophercloud v0.0.0-20190126172459-c818fa66e4c8/go.mod h1:3WdhXV3rUYy9p6AUW8d94kr+HS62Y4VL9mBnFxsD8q4= | |
+github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= | |
+github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= | |
+github.com/gregjones/httpcache v0.0.0-20190212212710-3befbb6ad0cc h1:f8eY6cV/x1x+HLjOp4r72s/31/V2aTUtg5oKRRPf8/Q= | |
+github.com/gregjones/httpcache v0.0.0-20190212212710-3befbb6ad0cc/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= | |
+github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= | |
+github.com/grpc-ecosystem/go-grpc-prometheus v0.0.0-20170330212424-2500245aa611/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= | |
+github.com/grpc-ecosystem/grpc-gateway v1.3.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= | |
+github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCOH9wdo= | |
+github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= | |
+github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= | |
+github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= | |
+github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= | |
+github.com/imdario/mergo v0.3.7 h1:Y+UAYTZ7gDEuOfhxKWy+dvb5dRQ6rJjFSdX2HZY1/gI= | |
+github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= | |
+github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= | |
+github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= | |
+github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= | |
+github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= | |
+github.com/jonboulle/clockwork v0.0.0-20141017032234-72f9bd7c4e0c/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= | |
+github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be h1:AHimNtVIpiBjPUhEF5KNCkrUyqTSA5zWUl8sQ2bfGBE= | |
+github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= | |
+github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= | |
+github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= | |
+github.com/markbates/inflect v1.0.4 h1:5fh1gzTFhfae06u3hzHYO9xe3l3v3nW5Pwt3naLTP5g= | |
+github.com/markbates/inflect v1.0.4/go.mod h1:1fR9+pO2KHEO9ZRtto13gDwwZaAKstQzferVeWqbgNs= | |
+github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= | |
+github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= | |
+github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= | |
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= | |
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= | |
+github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= | |
+github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= | |
+github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= | |
+github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= | |
+github.com/natefinch/lumberjack v2.0.0+incompatible/go.mod h1:Wi9p2TTF5DG5oU+6YfsmYQpsTIOm0B1VNzQg9Mw6nPk= | |
+github.com/onsi/ginkgo v1.6.0 h1:Ix8l273rp3QzYgXSR+c8d1fTG7UPgYkOSELPhiY/YGw= | |
+github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= | |
+github.com/onsi/gomega v0.0.0-20190113212917-5533ce8a0da3 h1:EooPXg51Tn+xmWPXJUGCnJhJSpeuMlBmfJVcqIRmmv8= | |
+github.com/onsi/gomega v0.0.0-20190113212917-5533ce8a0da3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= | |
+github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g= | |
+github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= | |
+github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= | |
+github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= | |
+github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= | |
+github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw= | |
+github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | |
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | |
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | |
+github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= | |
+github.com/pquerna/ffjson v0.0.0-20180717144149-af8b230fcd20/go.mod h1:YARuvh7BUWHNhzDq2OM5tzR2RiCcN2D7sapiKyCel/M= | |
+github.com/prometheus/client_golang v0.9.2 h1:awm861/B8OKDd2I/6o1dy3ra4BamzKhYOiGItCeZ740= | |
+github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= | |
+github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910 h1:idejC8f05m9MGOsuEi1ATq9shN03HrxNkD/luQvxCv8= | |
+github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= | |
+github.com/prometheus/common v0.0.0-20181126121408-4724e9255275 h1:PnBWHBf+6L0jOqq0gIVUe6Yk0/QMZ640k6NvkxcBf+8= | |
+github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= | |
+github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a h1:9a8MnZMP0X2nLJdBg+pBmGgkJlSaKC2KaQmTCk1XDtE= | |
+github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= | |
+github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= | |
+github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= | |
+github.com/soheilhy/cmux v0.1.3/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= | |
+github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= | |
+github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= | |
+github.com/spf13/cobra v0.0.0-20180319062004-c439c4fa0937 h1:+ryWjMVzFAkEz5zT+Ms49aROZwxlJce3x3zLTFpkz3Y= | |
+github.com/spf13/cobra v0.0.0-20180319062004-c439c4fa0937/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= | |
+github.com/spf13/pflag v1.0.1 h1:aCvUg6QPl3ibpQUxyLkrEkCHtPqYJL4x9AuhqVqFis4= | |
+github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= | |
+github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | |
+github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= | |
+github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= | |
+github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= | |
+github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= | |
+github.com/ugorji/go v0.0.0-20171019201919-bdcc60b419d1/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ= | |
+github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= | |
+go.uber.org/atomic v0.0.0-20181018215023-8dc6146f7569/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= | |
+go.uber.org/atomic v1.3.2 h1:2Oa65PReHzfn29GpvgsYwloV9AVFHPDk8tYxt2c2tr4= | |
+go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= | |
+go.uber.org/multierr v0.0.0-20180122172545-ddea229ff1df/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= | |
+go.uber.org/multierr v1.1.0 h1:HoEmRHQPVSqub6w2z2d2EOVs2fjyFRGyofhKuyDq0QI= | |
+go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= | |
+go.uber.org/zap v0.0.0-20180814183419-67bc79d13d15/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= | |
+go.uber.org/zap v1.9.1 h1:XCJQEf3W6eZaVwhRBof6ImoYGJSITeKWsyeh3HFu/5o= | |
+go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= | |
+golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= | |
+golang.org/x/crypto v0.0.0-20181025213731-e84da0312774/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= | |
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= | |
+golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734 h1:p/H982KKEjUnLJkM3tt/LemDnOc1GiZL5FCVlORJ5zo= | |
+golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | |
+golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | |
+golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= | |
+golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= | |
+golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= | |
+golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | |
+golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | |
+golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | |
+golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | |
+golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | |
+golang.org/x/net v0.0.0-20190206173232-65e2d4e15006 h1:bfLnR+k0tq5Lqt6dflRLcZiz6UaXCMt3vhYJ1l4FQ80= | |
+golang.org/x/net v0.0.0-20190206173232-65e2d4e15006/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | |
+golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= | |
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3 h1:0GoQqolDA55aaLxZyTzK/Y2ePZzZTUrRacwib7cNsYQ= | |
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= | |
+golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a h1:tImsplftrFpALCYumobsd0K86vlAs/eXGFms2txfJfA= | |
+golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= | |
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | |
+golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | |
+golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw= | |
+golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | |
+golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | |
+golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | |
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | |
+golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | |
+golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI= | |
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | |
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | |
+golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db h1:6/JqlYfC1CCaLnGceQTI+sDGhC9UBSPAsBqI0Gun6kU= | |
+golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= | |
+golang.org/x/time v0.0.0-20161028155119-f51c12702a4d/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | |
+golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ= | |
+golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= | |
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | |
+golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | |
+golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= | |
+golang.org/x/tools v0.0.0-20190328211700-ab21143f2384 h1:TFlARGu6Czu1z7q93HTxcP1P+/ZFC/IKythI5RzrnRg= | |
+golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= | |
+gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= | |
+gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= | |
+gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= | |
+google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= | |
+google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= | |
+google.golang.org/appengine v1.5.0 h1:KxkO13IPW4Lslp2bz+KHP2E3gtFlrIGNThxkZQ3g+4c= | |
+google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= | |
+google.golang.org/genproto v0.0.0-20170731182057-09f6ed296fc6/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= | |
+google.golang.org/grpc v1.13.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= | |
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= | |
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | |
+gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= | |
+gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= | |
+gopkg.in/inf.v0 v0.9.0 h1:3zYtXIO92bvsdS3ggAdA8Gb4Azj0YU+TVY1uGYNFA8o= | |
+gopkg.in/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= | |
+gopkg.in/natefinch/lumberjack.v2 v2.0.0-20150622162204-20b71e5b60d7/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= | |
+gopkg.in/square/go-jose.v2 v2.0.0-20180411045311-89060dee6a84/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= | |
+gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= | |
+gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= | |
+gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0/go.mod h1:WDnlLJ4WF5VGsH/HVa3CI79GS0ol3YnhVnKP89i0kNg= | |
+gopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE= | |
+gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | |
+gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= | |
+k8s.io/api v0.0.0-20190222213804-5cb15d344471 h1:MzQGt8qWQCR+39kbYRd0uQqsvSidpYqJLFeWiJ9l4OE= | |
+k8s.io/api v0.0.0-20190222213804-5cb15d344471/go.mod h1:iuAfoD4hCxJ8Onx9kaTIt30j7jUFS00AXQi6QMi99vA= | |
+k8s.io/api v0.0.0-20190425012535-181e1f9c52c1 h1:VfWCVGGx0+ll/JC2oT+5ClpHdiLKLhuko1l7LKG4dh4= | |
+k8s.io/api v0.0.0-20190425012535-181e1f9c52c1/go.mod h1:AhUc3Ph6fhRc0SCpt0Hwv0E+Q8QiEAASkXKwfmT2JwU= | |
+k8s.io/apiextensions-apiserver v0.0.0-20190325193600-475668423e9f h1:+GpMltIq6SUOswgSQ3HcxgldikyBCreeRDkCYOzwfGk= | |
+k8s.io/apiextensions-apiserver v0.0.0-20190325193600-475668423e9f/go.mod h1:IxkesAMoaCRoLrPJdZNZUQp9NfZnzqaVzLhb2VEQzXE= | |
+k8s.io/apiextensions-apiserver v0.0.0-20190426053235-842c4571cde0 h1:blst2tV97kE1/Mxaxx3zzh6zUGpxCbGNq0CdFf9/N8s= | |
+k8s.io/apiextensions-apiserver v0.0.0-20190426053235-842c4571cde0/go.mod h1:IPM+7P9C3mY4uik+2wHMNbydKfSZpl9Hnu0Ze0447Wg= | |
+k8s.io/apimachinery v0.0.0-20190221213512-86fb29eff628 h1:UYfHH+KEF88OTg+GojQUwFTNxbxwmoktLwutUzR0GPg= | |
+k8s.io/apimachinery v0.0.0-20190221213512-86fb29eff628/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0= | |
+k8s.io/apimachinery v0.0.0-20190424052434-11f1676e3da4/go.mod h1:5CBnzrKYGHzv9ZsSKmQ8wHt4XI4/TUBPDwYM9FlZMyw= | |
+k8s.io/apimachinery v0.0.0-20190424212440-527a9d33701e/go.mod h1:5CBnzrKYGHzv9ZsSKmQ8wHt4XI4/TUBPDwYM9FlZMyw= | |
+k8s.io/apimachinery v0.0.0-20190425132440-17f84483f500 h1:WP0qwo6Cks8BJpy/B2EOUWOyuVoGEYu3x9kVpON7wTs= | |
+k8s.io/apimachinery v0.0.0-20190425132440-17f84483f500/go.mod h1:5CBnzrKYGHzv9ZsSKmQ8wHt4XI4/TUBPDwYM9FlZMyw= | |
+k8s.io/apiserver v0.0.0-20190319190228-a4358799e4fe h1:zD63Eo0qbcR9JzZ90yQsFMzXYSbfsCa5ICB2D2nX1tg= | |
+k8s.io/apiserver v0.0.0-20190319190228-a4358799e4fe/go.mod h1:6bqaTSOSJavUIXUtfaR9Os9JtTCm8ZqH2SUl2S60C4w= | |
+k8s.io/apiserver v0.0.0-20190426012941-33871ad74f4b/go.mod h1:omlj40TPI/OV4YFwPP09JuOkEkKbpS5bNE2T2sPeY80= | |
+k8s.io/apiserver v0.0.0-20190426133039-accf7b6d6716 h1:gByi/idNjfDDk+lWNRqWk2uE1/KAsJtYXRMEc2M1a1k= | |
+k8s.io/client-go v0.0.0-20190425172711-65184652c889/go.mod h1:PeVFCnjeDy6EwLN+wdDIZd1DwDY6jnkpQt9psMo5YRU= | |
+k8s.io/client-go v10.0.0+incompatible h1:F1IqCqw7oMBzDkqlcBymRq1450wD0eNqLE9jzUrIi34= | |
+k8s.io/client-go v10.0.0+incompatible/go.mod h1:7vJpHMYJwNQCWgzmNV+VYUl1zCObLyodBc8nIyt8L5s= | |
+k8s.io/client-go v11.0.0+incompatible h1:LBbX2+lOwY9flffWlJM7f1Ct8V2SRNiMRDFeiwnJo9o= | |
+k8s.io/client-go v11.0.0+incompatible/go.mod h1:7vJpHMYJwNQCWgzmNV+VYUl1zCObLyodBc8nIyt8L5s= | |
+k8s.io/code-generator v0.0.0-20190419212335-ff26e7842f9d h1:QY1FeareEgkYrWnF2D2XxZFlF0k5Ir4uE8YjD1kHi94= | |
+k8s.io/code-generator v0.0.0-20190419212335-ff26e7842f9d/go.mod h1:rVrFWfTVftGH7bb972nWC6N4QkJ4LU7FOXu8GH2UkJo= | |
+k8s.io/component-base v0.0.0-20190424053038-9fe063da3132/go.mod h1:pi2NQz+AaW5UMjaswai1Hfzqzhh7bV6ssi3X3k4s03g= | |
+k8s.io/gengo v0.0.0-20190116091435-f8a0810f38af h1:SwjZbO0u5ZuaV6TRMWOGB40iaycX8sbdMQHtjNZ19dk= | |
+k8s.io/gengo v0.0.0-20190116091435-f8a0810f38af/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= | |
+k8s.io/klog v0.3.0 h1:0VPpR+sizsiivjIfIAQH/rl8tan6jvWkS7lU+0di3lE= | |
+k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= | |
+k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30 h1:TRb4wNWoBVrH9plmkp2q86FIDppkbrEXdXlxU3a3BMI= | |
+k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30/go.mod h1:BXM9ceUBTj2QnfH2MK1odQs778ajze1RxcmP6S8RVVc= | |
+k8s.io/utils v0.0.0-20190221042446-c2654d5206da/go.mod h1:8k8uAuAQ0rXslZKaEWd0c3oVhZz7sSzSiPnVZayjIX0= | |
+k8s.io/utils v0.0.0-20190308190857-21c4ce38f2a7 h1:8r+l4bNWjRlsFYlQJnKJ2p7s1YQPj4XyXiJVqDHRx7c= | |
+k8s.io/utils v0.0.0-20190308190857-21c4ce38f2a7/go.mod h1:8k8uAuAQ0rXslZKaEWd0c3oVhZz7sSzSiPnVZayjIX0= | |
+modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= | |
+modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= | |
+modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= | |
+modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= | |
+modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= | |
+sigs.k8s.io/controller-runtime v0.1.10 h1:amLOmcekVdnsD1uIpmgRqfTbQWJ2qxvQkcdeFhcotn4= | |
+sigs.k8s.io/controller-runtime v0.1.10/go.mod h1:HFAYoOh6XMV+jKF1UjFwrknPbowfyHEHHRdJMf2jMX8= | |
+sigs.k8s.io/controller-tools v0.1.10 h1:onJbaVxkLKbLhy3BcLdesjkP6y+6WFVzg1BJv28BpCo= | |
+sigs.k8s.io/controller-tools v0.1.10/go.mod h1:6g08p9m9G/So3sBc1AOQifHfhxH/mb6Sc4z0LMI8XMw= | |
+sigs.k8s.io/kubebuilder-declarative-pattern v0.0.0-20190404154250-8bafc34fd655 h1:xzJa5Jmx3J18LQZeAWSbSPCcorx36asgETRwoCjD7wk= | |
+sigs.k8s.io/kubebuilder-declarative-pattern v0.0.0-20190404154250-8bafc34fd655/go.mod h1:ykt5oDuxE2+6o1OMDpAjLqFRzPdf4OHnCpvftPsUIIc= | |
+sigs.k8s.io/kubebuilder-declarative-pattern v0.0.0-20190624171758-3bfb5869c8b7 h1:MJsfBngQLTX7v99ZsNEJLtpX1n5mzKesZxRfgb6De2M= | |
+sigs.k8s.io/kubebuilder-declarative-pattern v0.0.0-20190624171758-3bfb5869c8b7/go.mod h1:ykt5oDuxE2+6o1OMDpAjLqFRzPdf4OHnCpvftPsUIIc= | |
+sigs.k8s.io/structured-merge-diff v0.0.0-20190302045857-e85c7b244fd2/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= | |
+sigs.k8s.io/testing_frameworks v0.1.1 h1:cP2l8fkA3O9vekpy5Ks8mmA0NW/F7yBdXf8brkWhVrs= | |
+sigs.k8s.io/testing_frameworks v0.1.1/go.mod h1:VVBKrHmJ6Ekkfz284YKhQePcdycOzNH9qL6ht1zEr/U= | |
+sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= | |
+sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= | |
diff -ruN ./k8s/manager.yaml /home/daniel/dev/addon-operators/coredns/k8s/manager.yaml | |
--- ./k8s/manager.yaml 1970-01-01 01:00:00.000000000 +0100 | |
+++ /home/daniel/dev/addon-operators/coredns/k8s/manager.yaml 2019-07-01 14:57:36.620341144 +0200 | |
@@ -0,0 +1,178 @@ | |
+apiVersion: rbac.authorization.k8s.io/v1 | |
+kind: ClusterRole | |
+metadata: | |
+ name: coredns-operator | |
+ labels: | |
+ k8s-app: coredns-operator | |
+rules: | |
+- apiGroups: | |
+ - addons.k8s.io | |
+ resources: | |
+ - coredns | |
+ verbs: | |
+ - get | |
+ - list | |
+ - watch | |
+ - create | |
+ - update | |
+ - patch | |
+ - delete | |
+- apiGroups: | |
+ - addons.k8s.io | |
+ resources: | |
+ - coredns/status | |
+ verbs: | |
+ - get | |
+ - update | |
+ - patch | |
+- apiGroups: | |
+ - admissionregistration.k8s.io | |
+ resources: | |
+ - mutatingwebhookconfigurations | |
+ - validatingwebhookconfigurations | |
+ verbs: | |
+ - get | |
+ - list | |
+ - watch | |
+ - create | |
+ - update | |
+ - patch | |
+ - delete | |
+- apiGroups: | |
+ - "" | |
+ resources: | |
+ - secrets | |
+ verbs: | |
+ - get | |
+ - list | |
+ - watch | |
+ - create | |
+ - update | |
+ - patch | |
+ - delete | |
+- apiGroups: | |
+ - "" | |
+ resources: | |
+ - services | |
+ verbs: | |
+ - get | |
+ - list | |
+ - watch | |
+ - create | |
+ - update | |
+ - patch | |
+ - delete | |
+- apiGroups: | |
+ - apps | |
+ - extensions | |
+ resources: | |
+ - deployments | |
+ verbs: | |
+ - get | |
+ - list | |
+ - watch | |
+ - create | |
+ - update | |
+ - delete | |
+ - patch | |
+- apiGroups: | |
+ - "" | |
+ resources: | |
+ - configmaps | |
+ - serviceaccounts | |
+ - services | |
+ verbs: | |
+ - get | |
+ - list | |
+ - watch | |
+ - create | |
+ - update | |
+ - delete | |
+ - patch | |
+- apiGroups: | |
+ - rbac.authorization.k8s.io | |
+ resources: | |
+ - roles | |
+ - rolebindings | |
+ - clusterroles | |
+ - clusterrolebindings | |
+ verbs: | |
+ - get | |
+ - list | |
+ - watch | |
+ - create | |
+ - update | |
+ - delete | |
+ - patch | |
+- apiGroups: | |
+ - "" | |
+ resources: | |
+ - endpoints | |
+ - namespaces | |
+ - nodes | |
+ - pods | |
+ verbs: | |
+ - get | |
+ - list | |
+ - watch | |
+--- | |
+apiVersion: rbac.authorization.k8s.io/v1 | |
+kind: ClusterRoleBinding | |
+metadata: | |
+ name: coredns-operator | |
+ labels: | |
+ k8s-app: coredns-operator | |
+roleRef: | |
+ apiGroup: rbac.authorization.k8s.io | |
+ kind: ClusterRole | |
+ name: coredns-operator | |
+subjects: | |
+- kind: ServiceAccount | |
+ name: coredns-operator | |
+ namespace: kube-system | |
+--- | |
+apiVersion: v1 | |
+kind: ServiceAccount | |
+metadata: | |
+ name: coredns-operator | |
+ namespace: kube-system | |
+ labels: | |
+ k8s-app: coredns-operator | |
+--- | |
+apiVersion: apps/v1 | |
+kind: Deployment | |
+metadata: | |
+ labels: | |
+ k8s-app: coredns-operator | |
+ name: coredns-operator | |
+ namespace: kube-system | |
+spec: | |
+ selector: | |
+ matchLabels: | |
+ k8s-app: coredns-operator | |
+ template: | |
+ metadata: | |
+ labels: | |
+ k8s-app: coredns-operator | |
+ spec: | |
+ containers: | |
+ - args: | |
+ - --metrics-addr=127.0.0.1:8080 | |
+ command: | |
+ - /manager | |
+ env: | |
+ - name: POD_NAMESPACE | |
+ valueFrom: | |
+ fieldRef: | |
+ fieldPath: metadata.namespace | |
+ image: IMAGE_NAME | |
+ imagePullPolicy: Always | |
+ name: manager | |
+ resources: | |
+ limits: | |
+ memory: 200Mi | |
+ requests: | |
+ cpu: 100m | |
+ memory: 200Mi | |
+ serviceAccount: coredns-operator | |
+ terminationGracePeriodSeconds: 10 | |
diff -ruN ./main.go /home/daniel/dev/addon-operators/coredns/main.go | |
--- ./main.go 2019-10-14 16:24:09.157459465 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/main.go 1970-01-01 01:00:00.000000000 +0100 | |
@@ -1,80 +0,0 @@ | |
-/* | |
- | |
-Licensed under the Apache License, Version 2.0 (the "License"); | |
-you may not use this file except in compliance with the License. | |
-You may obtain a copy of the License at | |
- | |
- http://www.apache.org/licenses/LICENSE-2.0 | |
- | |
-Unless required by applicable law or agreed to in writing, software | |
-distributed under the License is distributed on an "AS IS" BASIS, | |
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
-See the License for the specific language governing permissions and | |
-limitations under the License. | |
-*/ | |
- | |
-package main | |
- | |
-import ( | |
- "flag" | |
- "os" | |
- | |
- addonsv1alpha1 "github.com/kubernetes-sigs/test/api/v1alpha1" | |
- "github.com/kubernetes-sigs/test/controllers" | |
- "k8s.io/apimachinery/pkg/runtime" | |
- clientgoscheme "k8s.io/client-go/kubernetes/scheme" | |
- _ "k8s.io/client-go/plugin/pkg/client/auth/gcp" | |
- ctrl "sigs.k8s.io/controller-runtime" | |
- "sigs.k8s.io/controller-runtime/pkg/log/zap" | |
- // +kubebuilder:scaffold:imports | |
-) | |
- | |
-var ( | |
- scheme = runtime.NewScheme() | |
- setupLog = ctrl.Log.WithName("setup") | |
-) | |
- | |
-func init() { | |
- _ = clientgoscheme.AddToScheme(scheme) | |
- | |
- _ = addonsv1alpha1.AddToScheme(scheme) | |
- // +kubebuilder:scaffold:scheme | |
-} | |
- | |
-func main() { | |
- var metricsAddr string | |
- var enableLeaderElection bool | |
- flag.StringVar(&metricsAddr, "metrics-addr", ":8080", "The address the metric endpoint binds to.") | |
- flag.BoolVar(&enableLeaderElection, "enable-leader-election", false, | |
- "Enable leader election for controller manager. Enabling this will ensure there is only one active controller manager.") | |
- flag.Parse() | |
- | |
- ctrl.SetLogger(zap.Logger(true)) | |
- | |
- mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{ | |
- Scheme: scheme, | |
- MetricsBindAddress: metricsAddr, | |
- LeaderElection: enableLeaderElection, | |
- Port: 9443, | |
- }) | |
- if err != nil { | |
- setupLog.Error(err, "unable to start manager") | |
- os.Exit(1) | |
- } | |
- | |
- if err = (&controllers.CoreDNSReconciler{ | |
- Client: mgr.GetClient(), | |
- Log: ctrl.Log.WithName("controllers").WithName("CoreDNS"), | |
- Scheme: mgr.GetScheme(), | |
- }).SetupWithManager(mgr); err != nil { | |
- setupLog.Error(err, "unable to create controller", "controller", "CoreDNS") | |
- os.Exit(1) | |
- } | |
- // +kubebuilder:scaffold:builder | |
- | |
- setupLog.Info("starting manager") | |
- if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil { | |
- setupLog.Error(err, "problem running manager") | |
- os.Exit(1) | |
- } | |
-} | |
diff -ruN ./Makefile /home/daniel/dev/addon-operators/coredns/Makefile | |
--- ./Makefile 2019-10-14 16:23:40.252832287 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/Makefile 2019-07-01 14:57:36.616341088 +0200 | |
@@ -1,69 +1,66 @@ | |
# Image URL to use all building/pushing image targets | |
-IMG ?= controller:latest | |
-# Produce CRDs that work back to Kubernetes 1.11 (no version conversion) | |
-CRD_OPTIONS ?= "crd:trivialVersions=true" | |
- | |
-# Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set) | |
-ifeq (,$(shell go env GOBIN)) | |
-GOBIN=$(shell go env GOPATH)/bin | |
-else | |
-GOBIN=$(shell go env GOBIN) | |
-endif | |
+IMG ?= ${USER}/coredns-operator:latest | |
-all: manager | |
+all: test manager | |
# Run tests | |
test: generate fmt vet manifests | |
- go test ./... -coverprofile cover.out | |
+ go test ./pkg/... ./cmd/... -coverprofile cover.out | |
# Build manager binary | |
manager: generate fmt vet | |
- go build -o bin/manager main.go | |
+ go build -o bin/manager sigs.k8s.io/addon-operators/coredns/cmd/manager | |
# Run against the configured Kubernetes cluster in ~/.kube/config | |
-run: generate fmt vet manifests | |
- go run ./main.go | |
+run: generate fmt vet | |
+ go run ./cmd/manager/main.go | |
# Install CRDs into a cluster | |
install: manifests | |
- kustomize build config/crd | kubectl apply -f - | |
+ kubectl apply -f config/crds | |
# Deploy controller in the configured Kubernetes cluster in ~/.kube/config | |
deploy: manifests | |
- cd config/manager && kustomize edit set image controller=${IMG} | |
- kustomize build config/default | kubectl apply -f - | |
+ kubectl apply -f config/crds | |
+ cat k8s/manager.yaml | sed -e "s@IMAGE_NAME@${IMG}@g" | kubectl apply -f - | |
# Generate manifests e.g. CRD, RBAC etc. | |
-manifests: controller-gen | |
- $(CONTROLLER_GEN) $(CRD_OPTIONS) rbac:roleName=manager-role webhook paths="./..." output:crd:artifacts:config=config/crd/bases | |
+manifests: | |
+ go run vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go all | |
# Run go fmt against code | |
fmt: | |
- go fmt ./... | |
+ go fmt ./pkg/... ./cmd/... | |
# Run go vet against code | |
vet: | |
- go vet ./... | |
+ go vet ./pkg/... ./cmd/... | |
# Generate code | |
-generate: controller-gen | |
- $(CONTROLLER_GEN) object:headerFile=./hack/boilerplate.go.txt paths="./..." | |
+generate: | |
+ifndef GOPATH | |
+ $(error GOPATH not defined, please define GOPATH. Run "go help gopath" to learn more about GOPATH) | |
+endif | |
+ go generate ./pkg/... ./cmd/... | |
# Build the docker image | |
docker-build: test | |
docker build . -t ${IMG} | |
+ @echo "updating kustomize image patch file for manager resource" | |
+ sed -i'' -e 's@image: .*@image: '"${IMG}"'@' ./config/default/manager_image_patch.yaml | |
# Push the docker image | |
docker-push: | |
docker push ${IMG} | |
-# find or download controller-gen | |
-# download controller-gen if necessary | |
-controller-gen: | |
-ifeq (, $(shell which controller-gen)) | |
- go get sigs.k8s.io/controller-tools/cmd/controller-gen@v0.2.1 | |
-CONTROLLER_GEN=$(GOBIN)/controller-gen | |
-else | |
-CONTROLLER_GEN=$(shell which controller-gen) | |
-endif | |
+push-image: | |
+ mkdir -p .build | |
+ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o .build/manager ./cmd/manager | |
+ mkdir -p .build/bin | |
+ cd .build/bin; wget -N https://storage.googleapis.com/kubernetes-release/release/v1.14.0/bin/linux/amd64/kubectl | |
+ chmod +x .build/bin/kubectl | |
+ tar cvf .build/layer.tar -C .build manager bin/kubectl | |
+ tar rvf .build/layer.tar channels/ | |
+ crane append --base gcr.io/distroless/static:latest --new_layer .build/layer.tar --new_tag ${IMG} --output .build/merged.tar | |
+ crane push .build/merged.tar ${IMG} | |
diff -ruN ./pkg/apis/addons/group.go /home/daniel/dev/addon-operators/coredns/pkg/apis/addons/group.go | |
--- ./pkg/apis/addons/group.go 1970-01-01 01:00:00.000000000 +0100 | |
+++ /home/daniel/dev/addon-operators/coredns/pkg/apis/addons/group.go 2019-07-01 14:57:36.620341144 +0200 | |
@@ -0,0 +1,17 @@ | |
+/* | |
+ | |
+Licensed under the Apache License, Version 2.0 (the "License"); | |
+you may not use this file except in compliance with the License. | |
+You may obtain a copy of the License at | |
+ | |
+ http://www.apache.org/licenses/LICENSE-2.0 | |
+ | |
+Unless required by applicable law or agreed to in writing, software | |
+distributed under the License is distributed on an "AS IS" BASIS, | |
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
+See the License for the specific language governing permissions and | |
+limitations under the License. | |
+*/ | |
+ | |
+// Package addons contains addons API versions | |
+package addons | |
diff -ruN ./pkg/apis/addons/v1alpha1/coredns_types.go /home/daniel/dev/addon-operators/coredns/pkg/apis/addons/v1alpha1/coredns_types.go | |
--- ./pkg/apis/addons/v1alpha1/coredns_types.go 1970-01-01 01:00:00.000000000 +0100 | |
+++ /home/daniel/dev/addon-operators/coredns/pkg/apis/addons/v1alpha1/coredns_types.go 2019-07-01 14:57:36.620341144 +0200 | |
@@ -0,0 +1,81 @@ | |
+/* | |
+ | |
+Licensed under the Apache License, Version 2.0 (the "License"); | |
+you may not use this file except in compliance with the License. | |
+You may obtain a copy of the License at | |
+ | |
+ http://www.apache.org/licenses/LICENSE-2.0 | |
+ | |
+Unless required by applicable law or agreed to in writing, software | |
+distributed under the License is distributed on an "AS IS" BASIS, | |
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
+See the License for the specific language governing permissions and | |
+limitations under the License. | |
+*/ | |
+ | |
+package v1alpha1 | |
+ | |
+import ( | |
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | |
+ addonv1alpha1 "sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/addon/pkg/apis/v1alpha1" | |
+) | |
+ | |
+// CoreDNSSpec defines the desired state of CoreDNS | |
+type CoreDNSSpec struct { | |
+ addonv1alpha1.CommonSpec `json:",inline"` | |
+ addonv1alpha1.PatchSpec `json:",inline"` | |
+} | |
+ | |
+// CoreDNSStatus defines the observed state of CoreDNS | |
+type CoreDNSStatus struct { | |
+ addonv1alpha1.CommonStatus `json:",inline"` | |
+} | |
+ | |
+var _ addonv1alpha1.CommonObject = &CoreDNS{} | |
+var _ addonv1alpha1.Patchable = &CoreDNS{} | |
+ | |
+func (c *CoreDNS) ComponentName() string { | |
+ return "coredns" | |
+} | |
+ | |
+func (c *CoreDNS) CommonSpec() addonv1alpha1.CommonSpec { | |
+ return c.Spec.CommonSpec | |
+} | |
+ | |
+func (c *CoreDNS) GetCommonStatus() addonv1alpha1.CommonStatus { | |
+ return c.Status.CommonStatus | |
+} | |
+ | |
+func (c *CoreDNS) SetCommonStatus(s addonv1alpha1.CommonStatus) { | |
+ c.Status.CommonStatus = s | |
+} | |
+ | |
+func (c *CoreDNS) PatchSpec() addonv1alpha1.PatchSpec { | |
+ return c.Spec.PatchSpec | |
+} | |
+ | |
+// +genclient | |
+// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object | |
+ | |
+// CoreDNS is the Schema for the coredns API | |
+// +k8s:openapi-gen=true | |
+type CoreDNS struct { | |
+ metav1.TypeMeta `json:",inline"` | |
+ metav1.ObjectMeta `json:"metadata,omitempty"` | |
+ | |
+ Spec CoreDNSSpec `json:"spec,omitempty"` | |
+ Status CoreDNSStatus `json:"status,omitempty"` | |
+} | |
+ | |
+// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object | |
+ | |
+// CoreDNSList contains a list of CoreDNS | |
+type CoreDNSList struct { | |
+ metav1.TypeMeta `json:",inline"` | |
+ metav1.ListMeta `json:"metadata,omitempty"` | |
+ Items []CoreDNS `json:"items"` | |
+} | |
+ | |
+func init() { | |
+ SchemeBuilder.Register(&CoreDNS{}, &CoreDNSList{}) | |
+} | |
diff -ruN ./pkg/apis/addons/v1alpha1/doc.go /home/daniel/dev/addon-operators/coredns/pkg/apis/addons/v1alpha1/doc.go | |
--- ./pkg/apis/addons/v1alpha1/doc.go 1970-01-01 01:00:00.000000000 +0100 | |
+++ /home/daniel/dev/addon-operators/coredns/pkg/apis/addons/v1alpha1/doc.go 2019-07-01 14:57:36.620341144 +0200 | |
@@ -0,0 +1,22 @@ | |
+/* | |
+ | |
+Licensed under the Apache License, Version 2.0 (the "License"); | |
+you may not use this file except in compliance with the License. | |
+You may obtain a copy of the License at | |
+ | |
+ http://www.apache.org/licenses/LICENSE-2.0 | |
+ | |
+Unless required by applicable law or agreed to in writing, software | |
+distributed under the License is distributed on an "AS IS" BASIS, | |
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
+See the License for the specific language governing permissions and | |
+limitations under the License. | |
+*/ | |
+ | |
+// Package v1alpha1 contains API Schema definitions for the addons v1alpha1 API group | |
+// +k8s:openapi-gen=true | |
+// +k8s:deepcopy-gen=package,register | |
+// +k8s:conversion-gen=sigs.k8s.io/addon-operators/coredns/pkg/apis/addons | |
+// +k8s:defaulter-gen=TypeMeta | |
+// +groupName=addons.k8s.io | |
+package v1alpha1 | |
diff -ruN ./pkg/apis/addons/v1alpha1/register.go /home/daniel/dev/addon-operators/coredns/pkg/apis/addons/v1alpha1/register.go | |
--- ./pkg/apis/addons/v1alpha1/register.go 1970-01-01 01:00:00.000000000 +0100 | |
+++ /home/daniel/dev/addon-operators/coredns/pkg/apis/addons/v1alpha1/register.go 2019-07-01 14:57:36.624341199 +0200 | |
@@ -0,0 +1,45 @@ | |
+/* | |
+ | |
+Licensed under the Apache License, Version 2.0 (the "License"); | |
+you may not use this file except in compliance with the License. | |
+You may obtain a copy of the License at | |
+ | |
+ http://www.apache.org/licenses/LICENSE-2.0 | |
+ | |
+Unless required by applicable law or agreed to in writing, software | |
+distributed under the License is distributed on an "AS IS" BASIS, | |
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
+See the License for the specific language governing permissions and | |
+limitations under the License. | |
+*/ | |
+ | |
+// NOTE: Boilerplate only. Ignore this file. | |
+ | |
+// Package v1alpha1 contains API Schema definitions for the addons v1alpha1 API group | |
+// +k8s:openapi-gen=true | |
+// +k8s:deepcopy-gen=package,register | |
+// +k8s:conversion-gen=sigs.k8s.io/addon-operators/coredns/pkg/apis/addons | |
+// +k8s:defaulter-gen=TypeMeta | |
+// +groupName=addons.k8s.io | |
+package v1alpha1 | |
+ | |
+import ( | |
+ "k8s.io/apimachinery/pkg/runtime/schema" | |
+ "sigs.k8s.io/controller-runtime/pkg/runtime/scheme" | |
+) | |
+ | |
+var ( | |
+ // SchemeGroupVersion is group version used to register these objects | |
+ SchemeGroupVersion = schema.GroupVersion{Group: "addons.k8s.io", Version: "v1alpha1"} | |
+ | |
+ // SchemeBuilder is used to add go types to the GroupVersionKind scheme | |
+ SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion} | |
+ | |
+ // AddToScheme is required by pkg/client/... | |
+ AddToScheme = SchemeBuilder.AddToScheme | |
+) | |
+ | |
+// Resource is required by pkg/client/listers/... | |
+func Resource(resource string) schema.GroupResource { | |
+ return SchemeGroupVersion.WithResource(resource).GroupResource() | |
+} | |
diff -ruN ./pkg/apis/addons/v1alpha1/zz_generated.deepcopy.go /home/daniel/dev/addon-operators/coredns/pkg/apis/addons/v1alpha1/zz_generated.deepcopy.go | |
--- ./pkg/apis/addons/v1alpha1/zz_generated.deepcopy.go 1970-01-01 01:00:00.000000000 +0100 | |
+++ /home/daniel/dev/addon-operators/coredns/pkg/apis/addons/v1alpha1/zz_generated.deepcopy.go 2019-07-01 14:57:36.624341199 +0200 | |
@@ -0,0 +1,119 @@ | |
+// +build !ignore_autogenerated | |
+ | |
+/* | |
+ | |
+Licensed under the Apache License, Version 2.0 (the "License"); | |
+you may not use this file except in compliance with the License. | |
+You may obtain a copy of the License at | |
+ | |
+ http://www.apache.org/licenses/LICENSE-2.0 | |
+ | |
+Unless required by applicable law or agreed to in writing, software | |
+distributed under the License is distributed on an "AS IS" BASIS, | |
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
+See the License for the specific language governing permissions and | |
+limitations under the License. | |
+*/ | |
+// Code generated by main. DO NOT EDIT. | |
+ | |
+package v1alpha1 | |
+ | |
+import ( | |
+ runtime "k8s.io/apimachinery/pkg/runtime" | |
+) | |
+ | |
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. | |
+func (in *CoreDNS) DeepCopyInto(out *CoreDNS) { | |
+ *out = *in | |
+ out.TypeMeta = in.TypeMeta | |
+ in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) | |
+ in.Spec.DeepCopyInto(&out.Spec) | |
+ in.Status.DeepCopyInto(&out.Status) | |
+ return | |
+} | |
+ | |
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CoreDNS. | |
+func (in *CoreDNS) DeepCopy() *CoreDNS { | |
+ if in == nil { | |
+ return nil | |
+ } | |
+ out := new(CoreDNS) | |
+ in.DeepCopyInto(out) | |
+ return out | |
+} | |
+ | |
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. | |
+func (in *CoreDNS) DeepCopyObject() runtime.Object { | |
+ if c := in.DeepCopy(); c != nil { | |
+ return c | |
+ } | |
+ return nil | |
+} | |
+ | |
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. | |
+func (in *CoreDNSList) DeepCopyInto(out *CoreDNSList) { | |
+ *out = *in | |
+ out.TypeMeta = in.TypeMeta | |
+ out.ListMeta = in.ListMeta | |
+ if in.Items != nil { | |
+ in, out := &in.Items, &out.Items | |
+ *out = make([]CoreDNS, len(*in)) | |
+ for i := range *in { | |
+ (*in)[i].DeepCopyInto(&(*out)[i]) | |
+ } | |
+ } | |
+ return | |
+} | |
+ | |
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CoreDNSList. | |
+func (in *CoreDNSList) DeepCopy() *CoreDNSList { | |
+ if in == nil { | |
+ return nil | |
+ } | |
+ out := new(CoreDNSList) | |
+ in.DeepCopyInto(out) | |
+ return out | |
+} | |
+ | |
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. | |
+func (in *CoreDNSList) DeepCopyObject() runtime.Object { | |
+ if c := in.DeepCopy(); c != nil { | |
+ return c | |
+ } | |
+ return nil | |
+} | |
+ | |
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. | |
+func (in *CoreDNSSpec) DeepCopyInto(out *CoreDNSSpec) { | |
+ *out = *in | |
+ out.CommonSpec = in.CommonSpec | |
+ in.PatchSpec.DeepCopyInto(&out.PatchSpec) | |
+ return | |
+} | |
+ | |
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CoreDNSSpec. | |
+func (in *CoreDNSSpec) DeepCopy() *CoreDNSSpec { | |
+ if in == nil { | |
+ return nil | |
+ } | |
+ out := new(CoreDNSSpec) | |
+ in.DeepCopyInto(out) | |
+ return out | |
+} | |
+ | |
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. | |
+func (in *CoreDNSStatus) DeepCopyInto(out *CoreDNSStatus) { | |
+ *out = *in | |
+ in.CommonStatus.DeepCopyInto(&out.CommonStatus) | |
+ return | |
+} | |
+ | |
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CoreDNSStatus. | |
+func (in *CoreDNSStatus) DeepCopy() *CoreDNSStatus { | |
+ if in == nil { | |
+ return nil | |
+ } | |
+ out := new(CoreDNSStatus) | |
+ in.DeepCopyInto(out) | |
+ return out | |
+} | |
diff -ruN ./pkg/apis/addtoscheme_addons_v1alpha1.go /home/daniel/dev/addon-operators/coredns/pkg/apis/addtoscheme_addons_v1alpha1.go | |
--- ./pkg/apis/addtoscheme_addons_v1alpha1.go 1970-01-01 01:00:00.000000000 +0100 | |
+++ /home/daniel/dev/addon-operators/coredns/pkg/apis/addtoscheme_addons_v1alpha1.go 2019-07-01 14:57:36.624341199 +0200 | |
@@ -0,0 +1,25 @@ | |
+/* | |
+ | |
+Licensed under the Apache License, Version 2.0 (the "License"); | |
+you may not use this file except in compliance with the License. | |
+You may obtain a copy of the License at | |
+ | |
+ http://www.apache.org/licenses/LICENSE-2.0 | |
+ | |
+Unless required by applicable law or agreed to in writing, software | |
+distributed under the License is distributed on an "AS IS" BASIS, | |
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
+See the License for the specific language governing permissions and | |
+limitations under the License. | |
+*/ | |
+ | |
+package apis | |
+ | |
+import ( | |
+ "sigs.k8s.io/addon-operators/coredns/pkg/apis/addons/v1alpha1" | |
+) | |
+ | |
+func init() { | |
+ // Register the types with the Scheme so the components can map objects to GroupVersionKinds and back | |
+ AddToSchemes = append(AddToSchemes, v1alpha1.SchemeBuilder.AddToScheme) | |
+} | |
diff -ruN ./pkg/apis/apis.go /home/daniel/dev/addon-operators/coredns/pkg/apis/apis.go | |
--- ./pkg/apis/apis.go 1970-01-01 01:00:00.000000000 +0100 | |
+++ /home/daniel/dev/addon-operators/coredns/pkg/apis/apis.go 2019-07-01 14:57:36.624341199 +0200 | |
@@ -0,0 +1,32 @@ | |
+/* | |
+ | |
+Licensed under the Apache License, Version 2.0 (the "License"); | |
+you may not use this file except in compliance with the License. | |
+You may obtain a copy of the License at | |
+ | |
+ http://www.apache.org/licenses/LICENSE-2.0 | |
+ | |
+Unless required by applicable law or agreed to in writing, software | |
+distributed under the License is distributed on an "AS IS" BASIS, | |
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
+See the License for the specific language governing permissions and | |
+limitations under the License. | |
+*/ | |
+ | |
+// Generate deepcopy for apis | |
+//go:generate go run ../../vendor/k8s.io/code-generator/cmd/deepcopy-gen/main.go -O zz_generated.deepcopy -i ./... -h ../../hack/boilerplate.go.txt | |
+ | |
+// Package apis contains Kubernetes API groups. | |
+package apis | |
+ | |
+import ( | |
+ "k8s.io/apimachinery/pkg/runtime" | |
+) | |
+ | |
+// AddToSchemes may be used to add all resources defined in the project to a Scheme | |
+var AddToSchemes runtime.SchemeBuilder | |
+ | |
+// AddToScheme adds all Resources to the Scheme | |
+func AddToScheme(s *runtime.Scheme) error { | |
+ return AddToSchemes.AddToScheme(s) | |
+} | |
diff -ruN ./pkg/controller/add_coredns.go /home/daniel/dev/addon-operators/coredns/pkg/controller/add_coredns.go | |
--- ./pkg/controller/add_coredns.go 1970-01-01 01:00:00.000000000 +0100 | |
+++ /home/daniel/dev/addon-operators/coredns/pkg/controller/add_coredns.go 2019-07-01 14:57:36.624341199 +0200 | |
@@ -0,0 +1,25 @@ | |
+/* | |
+ | |
+Licensed under the Apache License, Version 2.0 (the "License"); | |
+you may not use this file except in compliance with the License. | |
+You may obtain a copy of the License at | |
+ | |
+ http://www.apache.org/licenses/LICENSE-2.0 | |
+ | |
+Unless required by applicable law or agreed to in writing, software | |
+distributed under the License is distributed on an "AS IS" BASIS, | |
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
+See the License for the specific language governing permissions and | |
+limitations under the License. | |
+*/ | |
+ | |
+package controller | |
+ | |
+import ( | |
+ "sigs.k8s.io/addon-operators/coredns/pkg/controller/coredns" | |
+) | |
+ | |
+func init() { | |
+ // AddToManagerFuncs is a list of functions to create controllers and add them to a manager. | |
+ AddToManagerFuncs = append(AddToManagerFuncs, coredns.Add) | |
+} | |
diff -ruN ./pkg/controller/controller.go /home/daniel/dev/addon-operators/coredns/pkg/controller/controller.go | |
--- ./pkg/controller/controller.go 1970-01-01 01:00:00.000000000 +0100 | |
+++ /home/daniel/dev/addon-operators/coredns/pkg/controller/controller.go 2019-07-01 14:57:36.624341199 +0200 | |
@@ -0,0 +1,33 @@ | |
+/* | |
+ | |
+Licensed under the Apache License, Version 2.0 (the "License"); | |
+you may not use this file except in compliance with the License. | |
+You may obtain a copy of the License at | |
+ | |
+ http://www.apache.org/licenses/LICENSE-2.0 | |
+ | |
+Unless required by applicable law or agreed to in writing, software | |
+distributed under the License is distributed on an "AS IS" BASIS, | |
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
+See the License for the specific language governing permissions and | |
+limitations under the License. | |
+*/ | |
+ | |
+package controller | |
+ | |
+import ( | |
+ "sigs.k8s.io/controller-runtime/pkg/manager" | |
+) | |
+ | |
+// AddToManagerFuncs is a list of functions to add all Controllers to the Manager | |
+var AddToManagerFuncs []func(manager.Manager) error | |
+ | |
+// AddToManager adds all Controllers to the Manager | |
+func AddToManager(m manager.Manager) error { | |
+ for _, f := range AddToManagerFuncs { | |
+ if err := f(m); err != nil { | |
+ return err | |
+ } | |
+ } | |
+ return nil | |
+} | |
diff -ruN ./pkg/controller/coredns/coredns_controller.go /home/daniel/dev/addon-operators/coredns/pkg/controller/coredns/coredns_controller.go | |
--- ./pkg/controller/coredns/coredns_controller.go 1970-01-01 01:00:00.000000000 +0100 | |
+++ /home/daniel/dev/addon-operators/coredns/pkg/controller/coredns/coredns_controller.go 2019-08-07 10:00:22.090860940 +0200 | |
@@ -0,0 +1,142 @@ | |
+/* | |
+ | |
+Licensed under the Apache License, Version 2.0 (the "License"); | |
+you may not use this file except in compliance with the License. | |
+You may obtain a copy of the License at | |
+ | |
+ http://www.apache.org/licenses/LICENSE-2.0 | |
+ | |
+Unless required by applicable law or agreed to in writing, software | |
+distributed under the License is distributed on an "AS IS" BASIS, | |
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
+See the License for the specific language governing permissions and | |
+limitations under the License. | |
+*/ | |
+ | |
+package coredns | |
+ | |
+import ( | |
+ "context" | |
+ "fmt" | |
+ "net" | |
+ "strings" | |
+ | |
+ corev1 "k8s.io/api/core/v1" | |
+ "k8s.io/klog" | |
+ api "sigs.k8s.io/addon-operators/coredns/pkg/apis/addons/v1alpha1" | |
+ "sigs.k8s.io/controller-runtime/pkg/client" | |
+ "sigs.k8s.io/controller-runtime/pkg/controller" | |
+ "sigs.k8s.io/controller-runtime/pkg/handler" | |
+ "sigs.k8s.io/controller-runtime/pkg/manager" | |
+ "sigs.k8s.io/controller-runtime/pkg/reconcile" | |
+ "sigs.k8s.io/controller-runtime/pkg/source" | |
+ "sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/addon" | |
+ "sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/addon/pkg/status" | |
+ "sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/declarative" | |
+) | |
+ | |
+// Add creates a new CoreDNS Controller and adds it to the Manager with default RBAC. The Manager will set fields on the Controller | |
+// and Start it when the Manager is Started. | |
+func Add(mgr manager.Manager) error { | |
+ return add(mgr, newReconciler(mgr)) | |
+} | |
+ | |
+// newReconciler returns a new reconcile.Reconciler | |
+func newReconciler(mgr manager.Manager) *ReconcileCoreDNS { | |
+ labels := map[string]string{ | |
+ "k8s-app": "coredns", | |
+ } | |
+ | |
+ r := &ReconcileCoreDNS{} | |
+ | |
+ replacePlaceholders := func(ctx context.Context, object declarative.DeclarativeObject, s string) (string, error) { | |
+ // TODO: Should we default and if so where? | |
+ dnsDomain := "" // o.Spec.DNSDomain | |
+ if dnsDomain == "" { | |
+ dnsDomain = "cluster.local" | |
+ } | |
+ | |
+ dnsServerIP := "" // o.Spec.DNSServerIP | |
+ if dnsServerIP == "" { | |
+ ip, err := findDNSClusterIP(ctx, mgr.GetClient()) | |
+ if err != nil { | |
+ return "", fmt.Errorf("unable to find kube-dns IP: %v", err) | |
+ } | |
+ dnsServerIP = ip | |
+ } | |
+ | |
+ s = strings.Replace(s, "__PILLAR__DNS__DOMAIN__", dnsDomain, -1) | |
+ s = strings.Replace(s, "__PILLAR__DNS__SERVER__", dnsServerIP, -1) | |
+ | |
+ return s, nil | |
+ } | |
+ | |
+ r.Reconciler.Init(mgr, &api.CoreDNS{}, | |
+ declarative.WithRawManifestOperation(replacePlaceholders), | |
+ declarative.WithObjectTransform(declarative.AddLabels(labels)), | |
+ declarative.WithOwner(declarative.SourceAsOwner), | |
+ declarative.WithLabels(declarative.SourceLabel(mgr.GetScheme())), | |
+ declarative.WithStatus(status.NewBasic(mgr.GetClient())), | |
+ declarative.WithObjectTransform(addon.ApplyPatches), | |
+ ) | |
+ | |
+ return r | |
+} | |
+ | |
+func add(mgr manager.Manager, r *ReconcileCoreDNS) error { | |
+ // Create a new controller | |
+ c, err := controller.New("coredns-controller", mgr, controller.Options{Reconciler: r}) | |
+ if err != nil { | |
+ return err | |
+ } | |
+ | |
+ // Watch for changes to CoreDNS | |
+ err = c.Watch(&source.Kind{Type: &api.CoreDNS{}}, &handler.EnqueueRequestForObject{}) | |
+ if err != nil { | |
+ return err | |
+ } | |
+ | |
+ // Watch for changes to deployed objects | |
+ _, err = declarative.WatchAll(mgr.GetConfig(), c, r, declarative.SourceLabel(mgr.GetScheme())) | |
+ if err != nil { | |
+ return err | |
+ } | |
+ | |
+ return nil | |
+} | |
+ | |
+var _ reconcile.Reconciler = &ReconcileCoreDNS{} | |
+ | |
+// +kubebuilder:rbac:groups=addons.k8s.io,resources=coredns,verbs=get;list;watch;create;update;patch;delete | |
+// +kubebuilder:rbac:groups=addons.k8s.io,resources=coredns/status,verbs=get;update;patch | |
+// +kubebuilder:rbac:groups=apps;extensions,resources=deployments,verbs=get;list;watch;create;update;delete;patch | |
+// +kubebuilder:rbac:groups="",resources=configmaps;serviceaccounts;services,verbs=get;list;watch;create;update;delete;patch | |
+// +kubebuilder:rbac:groups=rbac.authorization.k8s.io,resources=roles;rolebindings;clusterroles;clusterrolebindings,verbs=get;list;watch;create;update;delete;patch | |
+// To grant permissions to CoreDNS, we need those permissions: | |
+// +kubebuilder:rbac:groups="",resources=endpoints;namespaces;nodes;pods,verbs=get;list;watch | |
+// ReconcileCoreDNS reconciles a CoreDNS object | |
+type ReconcileCoreDNS struct { | |
+ declarative.Reconciler | |
+} | |
+ | |
+func findDNSClusterIP(ctx context.Context, c client.Client) (string, error) { | |
+ kubernetesService := &corev1.Service{} | |
+ id := client.ObjectKey{Namespace: "default", Name: "kubernetes"} | |
+ if err := c.Get(ctx, id, kubernetesService); err != nil { | |
+ return "", fmt.Errorf("error getting service %s: %v", id, err) | |
+ } | |
+ | |
+ ip := net.ParseIP(kubernetesService.Spec.ClusterIP) | |
+ if ip == nil { | |
+ return "", fmt.Errorf("cannot parse kubernetes ClusterIP %q", kubernetesService.Spec.ClusterIP) | |
+ } | |
+ | |
+ // The kubernetes Service ClusterIP is the 1st IP in the Service Subnet. | |
+ // Increment the right-most byte by 9 to get to the 10th address, canonically used for kube-dns. | |
+ // This works for both IPV4, IPV6, and 16-byte IPV4 addresses. | |
+ ip[len(ip)-1] += 9 | |
+ | |
+ result := ip.String() | |
+ klog.Infof("determined ClusterIP for kube-dns should be %q", result) | |
+ return result, nil | |
+} | |
diff -ruN ./pkg/webhook/webhook.go /home/daniel/dev/addon-operators/coredns/pkg/webhook/webhook.go | |
--- ./pkg/webhook/webhook.go 1970-01-01 01:00:00.000000000 +0100 | |
+++ /home/daniel/dev/addon-operators/coredns/pkg/webhook/webhook.go 2019-07-01 14:57:36.624341199 +0200 | |
@@ -0,0 +1,36 @@ | |
+/* | |
+ | |
+Licensed under the Apache License, Version 2.0 (the "License"); | |
+you may not use this file except in compliance with the License. | |
+You may obtain a copy of the License at | |
+ | |
+ http://www.apache.org/licenses/LICENSE-2.0 | |
+ | |
+Unless required by applicable law or agreed to in writing, software | |
+distributed under the License is distributed on an "AS IS" BASIS, | |
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
+See the License for the specific language governing permissions and | |
+limitations under the License. | |
+*/ | |
+ | |
+package webhook | |
+ | |
+import ( | |
+ "sigs.k8s.io/controller-runtime/pkg/manager" | |
+) | |
+ | |
+// AddToManagerFuncs is a list of functions to add all Controllers to the Manager | |
+var AddToManagerFuncs []func(manager.Manager) error | |
+ | |
+// AddToManager adds all Controllers to the Manager | |
+// +kubebuilder:rbac:groups=admissionregistration.k8s.io,resources=mutatingwebhookconfigurations;validatingwebhookconfigurations,verbs=get;list;watch;create;update;patch;delete | |
+// +kubebuilder:rbac:groups="",resources=secrets,verbs=get;list;watch;create;update;patch;delete | |
+// +kubebuilder:rbac:groups="",resources=services,verbs=get;list;watch;create;update;patch;delete | |
+func AddToManager(m manager.Manager) error { | |
+ for _, f := range AddToManagerFuncs { | |
+ if err := f(m); err != nil { | |
+ return err | |
+ } | |
+ } | |
+ return nil | |
+} | |
diff -ruN ./PROJECT /home/daniel/dev/addon-operators/coredns/PROJECT | |
--- ./PROJECT 2019-10-14 16:24:08.777447288 +0200 | |
+++ /home/daniel/dev/addon-operators/coredns/PROJECT 2019-07-01 14:57:36.616341088 +0200 | |
@@ -1,7 +1,3 @@ | |
-version: "2" | |
+version: "1" | |
domain: k8s.io | |
-repo: github.com/kubernetes-sigs/test | |
-resources: | |
-- group: addons | |
- version: v1alpha1 | |
- kind: CoreDNS | |
+repo: sigs.k8s.io/addon-operators/coredns | |
diff -ruN ./README.md /home/daniel/dev/addon-operators/coredns/README.md | |
--- ./README.md 1970-01-01 01:00:00.000000000 +0100 | |
+++ /home/daniel/dev/addon-operators/coredns/README.md 2019-08-07 10:00:16.318786759 +0200 | |
@@ -0,0 +1,82 @@ | |
+# Example operator for CoreDNS | |
+ | |
+Broadly based on [kubebuilder-declarative-pattern walkthrough](https://github.com/kubernetes-sigs/kubebuilder-declarative-pattern/blob/master/docs/addon/walkthrough/README.md) | |
+ | |
+A few differences so we can use go modules and [crane](https://github.com/google/go-containerregistry/blob/master/cmd/crane/doc/crane.md) - neither of which are required, just personal preference. | |
+ | |
+Created with kubebuilder: | |
+ | |
+```bash | |
+kubebuilder init --dep=false --domain=k8s.io --license apache2 | |
+ | |
+kubebuilder create api --controller=true --example=false --group=addons --kind=CoreDNS --make=false --namespaced=true --resource=true --version=v1alpha1 | |
+ | |
+``` | |
+ | |
+Switched to go modules: | |
+ | |
+```bash | |
+export GO111MODULE=on | |
+go mod init sigs.k8s.io/addon-operators/coredns | |
+ | |
+# Insert our tools.go for extra dependencies | |
+cp ../tools.go tools.go | |
+ | |
+go get -m k8s.io/client-go@v10.0.0 | |
+go get -m k8s.io/api@kubernetes-1.13.5 | |
+go get -m k8s.io/apimachinery@kubernetes-1.13.5 | |
+go get -m k8s.io/apiserver@kubernetes-1.13.5 | |
+go get -m k8s.io/apiextensions-apiserver@kubernetes-1.13.5 | |
+ | |
+go mod vendor | |
+ | |
+rm Gopkg.toml | |
+``` | |
+ | |
+Delete the test suites that are more checking that kubebuilder is working: | |
+ | |
+```bash | |
+find . -name "*_test.go" -delete | |
+``` | |
+ | |
+Commit | |
+ | |
+```bash | |
+git add . | |
+git reset HEAD vendor | |
+git commit -m "Initial CoreDNS scaffolding" | |
+``` | |
+ | |
+ | |
+ | |
+Create the manifests (we bake them into the addon-operator by default): | |
+ | |
+```bash | |
+mkdir -p channels/packages/coredns/1.3.1/ | |
+pushd channels/packages/coredns/1.3.1/ | |
+wget https://raw.githubusercontent.com/kubernetes/kubernetes/9b437f95207c04bf2f25ef3110fac9b356d1fa91/cluster/addons/dns/coredns/coredns.yaml.base | |
+cat coredns.yaml.base > manifest.yaml | |
+popd | |
+``` | |
+ | |
+Define the stable channel: | |
+ | |
+```bash | |
+ | |
+cat > channels/stable <<EOF | |
+manifests: | |
+- version: 1.3.1 | |
+EOF | |
+ | |
+``` | |
+ | |
+ | |
+Generally follow the [main instructions](https://github.com/kubernetes-sigs/kubebuilder-declarative-pattern/blob/master/docs/addon/walkthrough/README.md) at this point: | |
+ | |
+* [enable the declarative pattern library in your types](https://github.com/kubernetes-sigs/kubebuilder-declarative-pattern/tree/master/docs/addon/walkthrough#adding-the-framework-into-our-types) and | |
+* [enable to declarative pattern in your controller](https://github.com/kubernetes-sigs/kubebuilder-declarative-pattern/tree/master/docs/addon/walkthrough#using-the-framework-in-the-controller) | |
+* finally add the [call to addon.Init](https://github.com/kubernetes-sigs/kubebuilder-declarative-pattern/tree/master/docs/addon/walkthrough#misc) | |
+ | |
+Note that we intend to build these three steps into kubebuilder! | |
+ | |
+Then follow the instructions for deploying onto kubernetes. | |
diff -ruN ./tools.go /home/daniel/dev/addon-operators/coredns/tools.go | |
--- ./tools.go 1970-01-01 01:00:00.000000000 +0100 | |
+++ /home/daniel/dev/addon-operators/coredns/tools.go 2019-07-01 14:57:36.624341199 +0200 | |
@@ -0,0 +1,9 @@ | |
+// +build tools | |
+package coredns | |
+ | |
+// Additional go module dependencies | |
+ | |
+import ( | |
+ _ "k8s.io/code-generator/cmd/deepcopy-gen" | |
+ _ "sigs.k8s.io/controller-tools/cmd/controller-gen" | |
+) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment