Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
468bf1da
Commit
468bf1da
authored
Mar 06, 2015
by
derekwaynecarr
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Enable common set of admission controllers across salt providers
parent
6d465c4d
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
102 additions
and
4 deletions
+102
-4
create-dynamic-salt-files.sh
cluster/aws/templates/create-dynamic-salt-files.sh
+1
-0
config-default.sh
cluster/gce/config-default.sh
+3
-0
configure-vm.sh
cluster/gce/configure-vm.sh
+1
-0
util.sh
cluster/gce/util.sh
+1
-0
default
cluster/saltbase/salt/kube-apiserver/default
+2
-2
config-default.sh
cluster/vagrant/config-default.sh
+1
-1
provision-master.sh
cluster/vagrant/provision-master.sh
+1
-1
admission.go
plugin/pkg/admission/namespace/autoprovision/admission.go
+4
-0
admission_test.go
...n/pkg/admission/namespace/autoprovision/admission_test.go
+88
-0
No files found.
cluster/aws/templates/create-dynamic-salt-files.sh
View file @
468bf1da
...
@@ -33,6 +33,7 @@ enable_cluster_dns: '$(echo "$ENABLE_CLUSTER_DNS" | sed -e "s/'/''/g")'
...
@@ -33,6 +33,7 @@ enable_cluster_dns: '$(echo "$ENABLE_CLUSTER_DNS" | sed -e "s/'/''/g")'
dns_replicas: '
$(
echo
"
$DNS_REPLICAS
"
|
sed
-e
"s/'/''/g"
)
'
dns_replicas: '
$(
echo
"
$DNS_REPLICAS
"
|
sed
-e
"s/'/''/g"
)
'
dns_server: '
$(
echo
"
$DNS_SERVER_IP
"
|
sed
-e
"s/'/''/g"
)
'
dns_server: '
$(
echo
"
$DNS_SERVER_IP
"
|
sed
-e
"s/'/''/g"
)
'
dns_domain: '
$(
echo
"
$DNS_DOMAIN
"
|
sed
-e
"s/'/''/g"
)
'
dns_domain: '
$(
echo
"
$DNS_DOMAIN
"
|
sed
-e
"s/'/''/g"
)
'
admission_control: '
$(
echo
"
$ADMISSION_CONTROL
"
|
sed
-e
"s/'/''/g"
)
'
EOF
EOF
mkdir
-p
/srv/salt-overlay/salt/nginx
mkdir
-p
/srv/salt-overlay/salt/nginx
...
...
cluster/gce/config-default.sh
View file @
468bf1da
...
@@ -105,3 +105,6 @@ ENABLE_CLUSTER_DNS=true
...
@@ -105,3 +105,6 @@ ENABLE_CLUSTER_DNS=true
DNS_SERVER_IP="10.0.0.10"
DNS_SERVER_IP="10.0.0.10"
DNS_DOMAIN="kubernetes.local"
DNS_DOMAIN="kubernetes.local"
DNS_REPLICAS=1
DNS_REPLICAS=1
# Admission Controllers to invoke prior to persisting objects in cluster
ADMISSION_CONTROL=NamespaceAutoProvision,LimitRanger,ResourceQuota
cluster/gce/configure-vm.sh
View file @
468bf1da
...
@@ -200,6 +200,7 @@ enable_cluster_dns: '$(echo "$ENABLE_CLUSTER_DNS" | sed -e "s/'/''/g")'
...
@@ -200,6 +200,7 @@ enable_cluster_dns: '$(echo "$ENABLE_CLUSTER_DNS" | sed -e "s/'/''/g")'
dns_replicas: '
$(
echo
"
$DNS_REPLICAS
"
|
sed
-e
"s/'/''/g"
)
'
dns_replicas: '
$(
echo
"
$DNS_REPLICAS
"
|
sed
-e
"s/'/''/g"
)
'
dns_server: '
$(
echo
"
$DNS_SERVER_IP
"
|
sed
-e
"s/'/''/g"
)
'
dns_server: '
$(
echo
"
$DNS_SERVER_IP
"
|
sed
-e
"s/'/''/g"
)
'
dns_domain: '
$(
echo
"
$DNS_DOMAIN
"
|
sed
-e
"s/'/''/g"
)
'
dns_domain: '
$(
echo
"
$DNS_DOMAIN
"
|
sed
-e
"s/'/''/g"
)
'
admission_control: '
$(
echo
"
$ADMISSION_CONTROL
"
|
sed
-e
"s/'/''/g"
)
'
EOF
EOF
if
[[
"
${
KUBERNETES_MASTER
}
"
==
"true"
]]
;
then
if
[[
"
${
KUBERNETES_MASTER
}
"
==
"true"
]]
;
then
...
...
cluster/gce/util.sh
View file @
468bf1da
...
@@ -452,6 +452,7 @@ DNS_REPLICAS: $(yaml-quote ${DNS_REPLICAS:-})
...
@@ -452,6 +452,7 @@ DNS_REPLICAS: $(yaml-quote ${DNS_REPLICAS:-})
DNS_SERVER_IP:
$(
yaml-quote
${
DNS_SERVER_IP
:-})
DNS_SERVER_IP:
$(
yaml-quote
${
DNS_SERVER_IP
:-})
DNS_DOMAIN:
$(
yaml-quote
${
DNS_DOMAIN
:-})
DNS_DOMAIN:
$(
yaml-quote
${
DNS_DOMAIN
:-})
MASTER_HTPASSWD:
$(
yaml-quote
${
MASTER_HTPASSWD
})
MASTER_HTPASSWD:
$(
yaml-quote
${
MASTER_HTPASSWD
})
ADMISSION_CONTROL:
$(
yaml-quota
${
ADMISSION_CONTROL
:-})
EOF
EOF
if
[[
"
${
master
}
"
!=
"true"
]]
;
then
if
[[
"
${
master
}
"
!=
"true"
]]
;
then
...
...
cluster/saltbase/salt/kube-apiserver/default
View file @
468bf1da
...
@@ -59,8 +59,8 @@
...
@@ -59,8 +59,8 @@
{% endif -%}
{% endif -%}
{% set admission_control = "" -%}
{% set admission_control = "" -%}
{% if
grains.admission_control
is defined -%}
{% if
pillar['admission_control']
is defined -%}
{% set admission_control = "--admission_control=" +
grains.admission_control
-%}
{% set admission_control = "--admission_control=" +
pillar['admission_control']
-%}
{% endif -%}
{% endif -%}
{% set runtime_config = "" -%}
{% set runtime_config = "" -%}
...
...
cluster/vagrant/config-default.sh
View file @
468bf1da
...
@@ -49,7 +49,7 @@ MASTER_USER=vagrant
...
@@ -49,7 +49,7 @@ MASTER_USER=vagrant
MASTER_PASSWD
=
vagrant
MASTER_PASSWD
=
vagrant
# Admission Controllers to invoke prior to persisting objects in cluster
# Admission Controllers to invoke prior to persisting objects in cluster
ADMISSION_CONTROL
=
Namespace
Exists,LimitRanger,ResourceQuota,AlwaysAdmit
ADMISSION_CONTROL
=
Namespace
AutoProvision,LimitRanger,ResourceQuota
# Optional: Install node monitoring.
# Optional: Install node monitoring.
ENABLE_NODE_MONITORING
=
true
ENABLE_NODE_MONITORING
=
true
...
...
cluster/vagrant/provision-master.sh
View file @
468bf1da
...
@@ -83,7 +83,6 @@ grains:
...
@@ -83,7 +83,6 @@ grains:
cloud_provider: vagrant
cloud_provider: vagrant
roles:
roles:
- kubernetes-master
- kubernetes-master
admission_control: '
$(
echo
"
$ADMISSION_CONTROL
"
|
sed
-e
"s/'/''/g"
)
'
runtime_config: '
$(
echo
"
$RUNTIME_CONFIG
"
|
sed
-e
"s/'/''/g"
)
'
runtime_config: '
$(
echo
"
$RUNTIME_CONFIG
"
|
sed
-e
"s/'/''/g"
)
'
EOF
EOF
...
@@ -102,6 +101,7 @@ cat <<EOF >/srv/salt-overlay/pillar/cluster-params.sls
...
@@ -102,6 +101,7 @@ cat <<EOF >/srv/salt-overlay/pillar/cluster-params.sls
dns_server: '
$(
echo
"
$DNS_SERVER_IP
"
|
sed
-e
"s/'/''/g"
)
'
dns_server: '
$(
echo
"
$DNS_SERVER_IP
"
|
sed
-e
"s/'/''/g"
)
'
dns_domain: '
$(
echo
"
$DNS_DOMAIN
"
|
sed
-e
"s/'/''/g"
)
'
dns_domain: '
$(
echo
"
$DNS_DOMAIN
"
|
sed
-e
"s/'/''/g"
)
'
instance_prefix: '
$(
echo
"
$INSTANCE_PREFIX
"
|
sed
-e
"s/'/''/g"
)
'
instance_prefix: '
$(
echo
"
$INSTANCE_PREFIX
"
|
sed
-e
"s/'/''/g"
)
'
admission_control: '
$(
echo
"
$ADMISSION_CONTROL
"
|
sed
-e
"s/'/''/g"
)
'
EOF
EOF
# Configure the salt-master
# Configure the salt-master
...
...
plugin/pkg/admission/namespace/autoprovision/admission.go
View file @
468bf1da
...
@@ -45,6 +45,10 @@ type provision struct {
...
@@ -45,6 +45,10 @@ type provision struct {
}
}
func
(
p
*
provision
)
Admit
(
a
admission
.
Attributes
)
(
err
error
)
{
func
(
p
*
provision
)
Admit
(
a
admission
.
Attributes
)
(
err
error
)
{
// only handle create requests
if
a
.
GetOperation
()
!=
"CREATE"
{
return
nil
}
defaultVersion
,
kind
,
err
:=
latest
.
RESTMapper
.
VersionAndKindForResource
(
a
.
GetResource
())
defaultVersion
,
kind
,
err
:=
latest
.
RESTMapper
.
VersionAndKindForResource
(
a
.
GetResource
())
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
...
...
plugin/pkg/admission/namespace/autoprovision/admission_test.go
View file @
468bf1da
...
@@ -15,3 +15,91 @@ limitations under the License.
...
@@ -15,3 +15,91 @@ limitations under the License.
*/
*/
package
autoprovision
package
autoprovision
import
(
"testing"
"github.com/GoogleCloudPlatform/kubernetes/pkg/admission"
"github.com/GoogleCloudPlatform/kubernetes/pkg/api"
"github.com/GoogleCloudPlatform/kubernetes/pkg/client"
"github.com/GoogleCloudPlatform/kubernetes/pkg/client/cache"
)
// TestAdmission verifies a namespace is created on create requests for namespace managed resources
func
TestAdmission
(
t
*
testing
.
T
)
{
namespace
:=
"test"
mockClient
:=
&
client
.
Fake
{}
handler
:=
&
provision
{
client
:
mockClient
,
store
:
cache
.
NewStore
(
cache
.
MetaNamespaceKeyFunc
),
}
pod
:=
api
.
Pod
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"123"
,
Namespace
:
namespace
},
Spec
:
api
.
PodSpec
{
Volumes
:
[]
api
.
Volume
{{
Name
:
"vol"
}},
Containers
:
[]
api
.
Container
{{
Name
:
"ctr"
,
Image
:
"image"
}},
},
}
err
:=
handler
.
Admit
(
admission
.
NewAttributesRecord
(
&
pod
,
namespace
,
"pods"
,
"CREATE"
))
if
err
!=
nil
{
t
.
Errorf
(
"Unexpected error returned from admission handler"
)
}
if
len
(
mockClient
.
Actions
)
!=
1
{
t
.
Errorf
(
"Expected a create-namespace request"
)
}
if
mockClient
.
Actions
[
0
]
.
Action
!=
"create-namespace"
{
t
.
Errorf
(
"Expected a create-namespace request to be made via the client"
)
}
}
// TestAdmissionNamespaceExists verifies that no client call is made when a namespace already exists
func
TestAdmissionNamespaceExists
(
t
*
testing
.
T
)
{
namespace
:=
"test"
mockClient
:=
&
client
.
Fake
{}
store
:=
cache
.
NewStore
(
cache
.
MetaNamespaceKeyFunc
)
store
.
Add
(
&
api
.
Namespace
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
namespace
},
})
handler
:=
&
provision
{
client
:
mockClient
,
store
:
store
,
}
pod
:=
api
.
Pod
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"123"
,
Namespace
:
namespace
},
Spec
:
api
.
PodSpec
{
Volumes
:
[]
api
.
Volume
{{
Name
:
"vol"
}},
Containers
:
[]
api
.
Container
{{
Name
:
"ctr"
,
Image
:
"image"
}},
},
}
err
:=
handler
.
Admit
(
admission
.
NewAttributesRecord
(
&
pod
,
namespace
,
"pods"
,
"CREATE"
))
if
err
!=
nil
{
t
.
Errorf
(
"Unexpected error returned from admission handler"
)
}
if
len
(
mockClient
.
Actions
)
!=
0
{
t
.
Errorf
(
"No client request should have been made"
)
}
}
// TestIgnoreAdmission validates that a request is ignored if its not a create
func
TestIgnoreAdmission
(
t
*
testing
.
T
)
{
namespace
:=
"test"
mockClient
:=
&
client
.
Fake
{}
handler
:=
&
provision
{
client
:
mockClient
,
store
:
cache
.
NewStore
(
cache
.
MetaNamespaceKeyFunc
),
}
pod
:=
api
.
Pod
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"123"
,
Namespace
:
namespace
},
Spec
:
api
.
PodSpec
{
Volumes
:
[]
api
.
Volume
{{
Name
:
"vol"
}},
Containers
:
[]
api
.
Container
{{
Name
:
"ctr"
,
Image
:
"image"
}},
},
}
err
:=
handler
.
Admit
(
admission
.
NewAttributesRecord
(
&
pod
,
namespace
,
"pods"
,
"UPDATE"
))
if
err
!=
nil
{
t
.
Errorf
(
"Unexpected error returned from admission handler"
)
}
if
len
(
mockClient
.
Actions
)
!=
0
{
t
.
Errorf
(
"No client request should have been made"
)
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment